Ho reindirizzato una riga nello script bash e voglio verificare se la pipe ha dati, prima di inviarli a un programma.
Cercando ho scoperto test -t 0
ma non funziona qui. Restituisce sempre falso. Quindi, come essere sicuri che la pipe abbia dati?
Esempio:
echo "string" | [ -t 0 ] && echo "empty" || echo "fill"
Produzione: fill
echo "string" | tail -n+2 | [ -t 0 ] && echo "empty" || echo "fill"
Produzione: fill
A differenza del modo standard / canonico per verificare se la pipeline precedente ha prodotto output? l'input deve essere preservato per passarlo al programma. Questo in generale Come convogliare l'output da un processo a un altro ma eseguirlo solo se il primo ha output? che si concentra sull'invio di e-mail.