Bash:
Kirjoittaminen standardivirheeseen
Kuinka:
Bashissa käytät >&2
uudelleenohjataksesi tulosteen stderr:iin. Tässä on perusesimerkki:
echo "Tämä on normaali viesti"
echo "Tämä on virheviesti" >&2
Tämän skriptin suorittaminen näyttää molemmat viestit konsolissa, mutta jos ohjaat ne uudelleen, voit erottaa stdout:n stderr:stä. Esimerkiksi:
bash script.sh > output.txt 2> error.txt
output.txt
sisältää "Tämä on normaali viesti"
, kun taas error.txt
sisältää "Tämä on virheviesti"
.
Käytännön esimerkissä katsotaan skriptiä, joka käsittelee tiedostoja ja raportoi virheen, jos tiedostoa ei ole olemassa:
filename="example.txt"
if [ ! -f "$filename" ]; then
echo "$filename ei ole olemassa!" >&2
exit 1
else
echo "Käsitellään $filename"
fi
Esimerkkituloste suoraan konsolissa, kun example.txt
ei ole olemassa:
example.txt ei ole olemassa!
Bashissa ei ole suoria kolmannen osapuolen kirjastoja stderr:n käsittelyyn, sillä uudelleenohjaus on natiivisti tuettu ja yleensä riittävä. Kuitenkin monimutkaisissa sovelluksissa voidaan käyttää lokituskehyksiä tai ulkoisia lokitusvälineitä, kuten syslog
tai log4bash
, jotta sekä stdout että stderr voidaan hallita tehokkaammin.