bash
scheint sich nicht zu beschweren, wenn Sie einen Befehl wie ausführen
$ < some-file-that-exists
Nichts scheint zu passieren.
Sie könnten auch verwenden
$ <<<"any string"
und sogar Prozesssubstitution.
Was genau macht das und warum ist es erlaubt? Könnte es für irgendetwas nützlich sein?
<
gibt Ihnen einen Fehler (zsh: parse error near `\n'
), da kein Argument angegeben wird.bash
, aber das ist interessant überless
.Antworten:
<
Richtet die Umleitung für einen Befehl ein, der vor oder nach den Umleitungsanweisungen erfolgen kann. Dhfunktioniert so gut wie
Wenn Sie jedoch keinen Befehl geben, richtet bash die Umleitung ein und führt nichts anderes aus. Bei der Umleitung von Eingaben entspricht dies dem, was Sie gesehen haben, nichts, wenn die Datei vorhanden und lesbar ist. Wenn die Datei nicht existiert oder nicht lesbar ist, signalisiert bash einen Fehler. Für die Umleitung der Ausgabe wird die Ausgabedatei erstellt, wenn sie nicht vorhanden ist. Alle vorhandenen Ausgabedateien werden abgeschnitten, wenn sie
>
verwendet werden. Keine Kürzung, wenn>>
verwendet wird.quelle
< file wc
vs.wc < file
?<liest standardmäßig von stdin oder einer Datei. Ihr Ausdruck hat nichts mit der Eingabe zu tun, da Sie nach dem Lesen nichts getan haben.
Wenn Sie am Ende die Ausgabedatei <eine Datei, die existiert> ausführen, werden Sie feststellen, dass Sie gerade den Inhalt der ersten Datei eingelesen und in die zweite Datei geschrieben haben.
<<< ist hier das Dokumentformat, also liest es aus einer Zeichenfolge statt aus einer Datei. cat <<< "any string", um zu sehen, was Sie gelesen haben.
quelle