Bash:
Scrivere sull'errore standard
Come fare:
In Bash, si usa >&2 per reindirizzare l’output su stderr. Ecco un esempio basilare:
echo "Questo è un messaggio normale"
echo "Questo è un messaggio di errore" >&2Eseguendo questo script verranno visualizzati entrambi i messaggi sulla console, ma se li reindirizzate, potete separare lo stdout dallo stderr. Ad esempio:
bash script.sh > output.txt 2> error.txtoutput.txt conterrà "Questo è un messaggio normale", mentre error.txt catturerà "Questo è un messaggio di errore".
Per un caso d’uso pratico, considerate uno script che elabora file e segnala un errore se un file non esiste:
filename="example.txt"
if [ ! -f "$filename" ]; then
echo "$filename non esiste!" >&2
exit 1
else
echo "Elaborazione di $filename"
fiOutput di esempio direttamente nella console quando example.txt non esiste:
example.txt non esiste!Non esistono librerie di terze parti in Bash per la gestione dello stderr, poiché il reindirizzamento è nativamente supportato ed è generalmente sufficiente. Tuttavia, per applicazioni complesse, framework di logging o strumenti di logging esterni come syslog o log4bash possono essere incorporati per gestire sia lo stdout che lo stderr in modo più efficace.