Schrijven naar standaardfout

Bash:
Schrijven naar standaardfout

Hoe te:

# Het echo-commando omleiden naar standaardfout
echo "Fout: Ongeldige invoer." >&2

# Met printf schrijven naar standaardfout
printf "Fout: Bestand niet gevonden.\n" >&2

# Voorbeeldscript dat naar zowel stdout als stderr schrijft
echo "Proces starten..."
echo "Oeps! Er ging iets fout." >&2
echo "Proces voltooid."

Voorbeelduitvoer:

Proces starten...
Proces voltooid.
Oeps! Er ging iets fout.

In het bovenstaande wordt “Oeps! Er ging iets fout.” naar stderr gestuurd en kan het in een terminal buiten volgorde verschijnen wanneer het wordt gemengd met stdout, aangezien stderr doorgaans niet gebufferd is.

Diepgaande duik

Bash erft het concept van ‘bestandsdescriptors’ van Unix, met stdout naar fd 1 en stderr naar fd 2. Omleiden naar &2 stuurt de uitvoer naar stderr. Historisch gezien maakt deze scheiding het beheer en het filteren gemakkelijker, met 2>&1 als een veelgebruikt patroon om stderr naar stdout om te leiden. Een levensvatbaar alternatief voor expliciete omleiding is het gebruik van logger voor syslog-integratie of het configureren van het script om fouten intern te behandelen.

Zie Ook