Um pipeline de shell executa os programas do pipeline não um após o outro, mas mais ou menos ao mesmo tempo (menos que o sistema se torne cada vez mais ocupado) como é mostrado quando as três primeiras chamadas date
são executadas :
$ date +%s; (date +%s >&2; sleep 3) | (date +%s >&2; sleep 5); date +%s
1502224035
1502224035
1502224035
1502224040
$
Portanto, o temporizador timeout
já está em contagem regressiva, enquanto wget
está ocupado fazendo o download dos dados, mas antes que display
tenha tido a chance de exibir os dados.
Uma alternativa seria baixar os dados com antecedência para que haja uma lista de arquivos para exibição para trabalhar; isso removeria os atrasos causados por wget
da porção display
.
#!/bin/sh
...
get_the_files_here
for f in a_glob_that_matches_the_files_here; do
timeout 10s display "$f"
done