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" >&2
Eseguendo 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.txt
output.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"
fi
Output 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.