Bash: enquanto lê a linha “ou a cada 60s”

1

Como eu implemento o "ou cada 60s" no exemplo a seguir?

prints_output_in_random_intervals | \
while read line "or every 60s"
do
  do_something
done
    
por Lugaxx 19.07.2016 / 17:00

1 resposta

3

Documentação de base incorporada help read menciona:

-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

Como read falhará se retornar porque o tempo limite foi atingido, tal condição também fará com que seu loop saia. Se você quiser Para evitar isso, você pode ignorar o status de saída de read da seguinte forma:

while read -t 60 line || true; do
    ...
done

ou

while true; do
    read -t 60 line
    ...
done
    
por 19.07.2016 / 17:38

Tags