次の例では、「または60秒ごとに」をどのように実装しますか?
prints_output_in_random_intervals | \
while read line "or every 60s"
do
do_something
done
ベストアンサー1
組み込みのbashドキュメントにはhelp read
次のものがあります。
-t timeout time out and return failure if a complete line of input is
not read withint TIMEOUT seconds. The value of the TMOUT
variable is the default timeout. TIMEOUT may be a
fractional number. If TIMEOUT is 0, read returns success only
if input is available on the specified file descriptor. The
exit status is greater than 128 if the timeout is exceeded
タイムアウトに達して返されると失敗するため、read
この状況でもループは終了します。これを防ぐには、read
次のように終了状態を無視します。
while read -t 60 line || true; do
...
done
または
while true; do
read -t 60 line
...
done