LINUX.ORG.RU

История изменений

Исправление Zmicier, (текущая версия) :

Можно ли как-то по таймеру (если долго ничего не выводит) прервать цикл

Да, элементарно:

#!/bin/bash

timeout=10 # s

while read -t $timeout line; do
    printf '%s\n' "$line"
done < \
     <(cat)

Выглядит сие так:

$ /tmp/0228
foo      
foo
ждем десять секунд
ждем десять секунд
$ # и программа завершилась

Исходная версия Zmicier, :

Можно ли как-то по таймеру (если долго ничего не выводит) прервать цикл

Да, элементарно:

#!/bin/bash

timeout=10 # s

while read -t $timeout line; do
    printf '%s\n' "$line"
done < \
     <(cat)
$ /tmp/0228
foo      
foo
ждем десять секунд
ждем десять секунд
$ # и программа завершилась