Bash:
Skriva till standardfel
Hur man gör:
I Bash använder du >&2
för att omdirigera utdata till stderr. Här är ett grundläggande exempel:
echo "Detta är ett normalt meddelande"
echo "Detta är ett felmeddelande" >&2
Att köra detta skript kommer att visa båda meddelandena i konsolen, men om du omdirigerar dem kan du separera stdout från stderr. Till exempel:
bash script.sh > output.txt 2> error.txt
output.txt
kommer att innehålla "Detta är ett normalt meddelande"
, medan error.txt
kommer att fånga "Detta är ett felmeddelande"
.
För ett praktiskt användningsfall, tänk dig ett skript som behandlar filer och rapporterar ett fel om en fil inte finns:
filename="example.txt"
if [ ! -f "$filename" ]; then
echo "$filename finns inte!" >&2
exit 1
else
echo "Bearbetar $filename"
fi
Exempel på utdata direkt i konsolen när example.txt
inte finns:
example.txt finns inte!
Det finns inga direkt till tredjepartsbibliotek i Bash för att hantera stderr, eftersom omdirigering är inbyggt stödd och generellt tillräckligt. Dock, för komplexa applikationer, kan loggningsramverk eller externa loggningsverktyg som syslog
eller log4bash
införlivas för att hantera både stdout och stderr mer effektivt.