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" >&2Tä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.txtoutput.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"
fiEsimerkkituloste 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.