Controlla se stderr è una pipe in bash
Domanda
Ho uno script bash che richiede all'utente di inserire "read". Se lo stdout o lo stderr vengono convogliati a qualcosa di diverso da un terminale, vorrei sopprimere questo passaggio. È possibile?
Soluzione
Puoi verificare se un filedescriptor è un tty (attaccato ad un terminale) con il comando test -t < filedescriptor no. > ;. In tal caso, è possibile richiedere all'utente. In caso contrario, l'output è probabilmente reindirizzato o ridimensionato da qualche parte.
if test -t 1 ; then
echo stdout is a tty
fi
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow