다음 예에서 "또는 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