Echo zu stderr in Bash
Eine Standardvariable für Fehlermeldungen, die in Bash-Skripts integriert ist, ist als stderr
bekannt. Es ist auch als Standardfehler bekannt, ein Standardausgabegerät für Fehler.
Manchmal müssen wir die Fehler in den Ausgabekanal umleiten. Die Linux-Umgebung identifiziert jedes Dateiobjekt mit seiner Beschreibung, bekannt als FD
.
Es ist ein positiver ganzzahliger Wert, der die geöffnete Dateisitzung identifiziert. Für stderr
ist der Wert des Dateideskriptors 2
.
In diesem Artikel erfahren Sie mehr über stderr
und seine Funktionalität. Außerdem werden wir uns einige Beispiele ansehen, die das Thema einfacher machen.
Echo auf stderr
in Bash
Der Befehl stderr
wird hauptsächlich verwendet, um Fehler während der Ausführung eines Befehls neu zu kodieren. Die allgemeine Syntax dieses Befehls lautet:
Your command here 2>error.log
In der oben geteilten Beispielsyntax finden Sie ein Symbol 2>
und eine Datei namens error.log
. Nun gibt die 2>
den Wert von FILE DESCRIPTOR
an, der die Identität von stderr
darstellt.
In unserem Fall ist der Wert des FILE DESCRIPTOR
2
. Jetzt ist der von uns angegebene Dateiname für die Protokolldatei, die während der Befehlsausführung generiert wird.
Sie können die Nachricht stderr
auch echo
, indem Sie dem folgenden Syntaxformat folgen.
Your command here >&2 echo "error"
Sehen wir uns ein Beispiel an, um das Thema zu vereinfachen. Angenommen, wir haben einen Fehlerbefehl erstellt und möchten die ausgegebene Fehlermeldung echo
.
Nun sieht unser Beispielcode so aus:
echo $( 3 + 2 )) >&2 echo "error"
In dem oben geteilten Code haben wir absichtlich einen Fehler gemacht, um zu verstehen, wie er funktioniert. Wir haben hier eine der Klammern entfernt, daher kann dies ein Fehler sein.
Danach zeigen wir diesen Fehler mit dem echo
an. Eine Ausgabe wie die folgende wird angezeigt, nachdem der obige Code ausgeführt wurde.
./example.sh: line 1: syntax error near unexpected token `)'
./example.sh: line 1: `echo $( 3 + 2 )) >&2 echo "error" '
Jetzt korrigieren wir den Code wie unten und führen den Befehl erneut aus.
echo $(( 3 + 2 )) >&2 "No error has been found."
Nachdem Sie den Code ausgeführt haben, erhalten Sie eine Ausgabe wie die folgende.
5 No error has been found.
Alle in diesem Artikel verwendeten Codes sind in Bash geschrieben. Es funktioniert nur in der Linux Shell-Umgebung.
Aminul Is an Expert Technical Writer and Full-Stack Developer. He has hands-on working experience on numerous Developer Platforms and SAAS startups. He is highly skilled in numerous Programming languages and Frameworks. He can write professional technical articles like Reviews, Programming, Documentation, SOP, User manual, Whitepaper, etc.
LinkedIn