I want to clear after quote has completed and before cat prints its output
Então, o que você está procurando não é executar clear
then cat
(o que seria fácil: quote … | { clear; cat; }
), porque cat
ainda seria iniciado antes que quote
fosse concluído. Um pipe não resolve seu problema, pois ele executa o produtor e o consumidor em paralelo. Em vez disso, você precisa armazenar a saída de quote
e exibi-la. Armazene a saída de uma substituição de comando em uma variável.
text=$(quote spy gld aapl amzn goog nflx tsla f gm msft)
clear
echo "$text"
Isso remove linhas em branco no final da saída. Se isso não for aceitável, você pode contornar esse recurso imprimindo uma linha extra não vazia no final e removendo-a. O comando echo
também manipula algumas strings curtas que começam com -
.
text=$(quote spy gld aapl amzn goog nflx tsla f gm msft; echo .)
clear
printf %s "${text%.}"