Ich möchte wissen, ob es einen integrierten BASH-Befehl gibt, der etwas Text auf stderr druckt, genau wie der echo
-Befehl, der Text auf stdout druckt. Ich möchte keine temporäre io-Umleitung verwenden. Ich benutze einen eingebauten Befehl, um einen Fehler auf stderr wie ls --asdf
(ls: unerkannte Option '--asdf') zu generieren, aber ich möchte etwas sauberer.
Bearbeiten ----
Eigentlich versuche ich die stderr / stdout-Umleitung zu demonstrieren, und mein Beispiel sieht so aus:
%Vor% Aus Gründen der Übersichtlichkeit möchte ich die Datei test.sh so einfach und sauber wie möglich halten, das heißt, >
operator in der Datei zu vermeiden.
echo something >&2
ist der richtige Weg, um das zu tun, was Sie wollen.
Wie auch immer ...
Dadurch wird ein kleines Programm erstellt, das seine Argumente an stderr
zurückgibt:
Sie können es wie folgt verwenden:
%Vor%Nur eine Randnotiz: Wenn Sie bash demonstrieren möchten, sollten Sie bash verwenden, nicht sh:
%Vor%Auch wenn sh ein Link zu bash auf Ihrem System ist, wird es überprüfen, wie es aufgerufen wurde (arg0) und sh-Aufrufe wie ein Aufruf behandeln
%Vor%was zu manchmal subtilen unterschiedlichen Verhaltensweisen führt. Ein häufiger Fehler, wie Shebang # / bin / sh, aber es hat in der Shell funktioniert (was / bin / bash war).
Niemand hat das erwähnt, aber Sie können das auch tun:
echo An error message > /dev/stderr
Es ist möglicherweise lesbarer als >&2
, aber ich denke, das hängt davon ab, wer du bist.
Im Allgemeinen denke ich, dass es keinen wirklichen Unterschied zwischen "zeitweiliger Weiterleitung" und dem, was Sie wollen, gibt. stderr ist ein Dateideskriptor wie jeder andere, und jedes Built-in, das das tut, was Sie wollen, würde innerlich dasselbe tun, indem Sie echo wie Jürgen weiterleiten, nämlich write () aufrufen.