GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Bash-Zeilenfortsetzungen nach &&und || Dokumentiert?

Ich habe dieses Konstrukt oft in Skripten gesehen und selbst verwendet, aber es stört mich, dass ich es anscheinend nicht in der Dokumentation finden kann.

Beispiel:

[ -f file1 ] &&
[ -f file2 ] &&
echo "Both files exist." ||
echo "One or the other file doesn't exist."

Dies könnte auch mit Backslashes vor den Zeilenumbrüchen erfolgen, wie in man bash erwähnt :

If a <newline> pair appears,  and  the  backslash  is  not
itself  quoted,  the <newline> is treated as a line continuation (that
is, it is removed from the input stream and effectively ignored).

Beispiel:

[ -f file1 ] && 
[ -f file2 ] && 
echo "Both files exist." || 
echo "One or the other file doesn't exist."

…aber das scheint nicht nötig zu sein. Die erste Version oben funktioniert sogar ohne die Backslashes.

Wo finde ich das in man bash ? (Außerdem ist das bash spezifisch oder POSIX-konform?)

Akzeptierte Antwort:

Ein Zeilenumbruch wird in einigen Kontexten ignoriert, in denen offensichtlich ein nicht beendeter Befehl vorhanden ist. Diese Kontexte beinhalten nach einem Kontrolloperator (&& , || , | , & , ; , ;; , aber nicht ! ).

Ich sehe dies nicht im Bash-Handbuch dokumentiert.

In POSIX wird es über die Grammatikregeln angegeben. Wo immer die Regeln linebreak haben , können Sie null oder mehr Zeilenumbrüche haben.


Linux
  1. Unterschied zwischen ' und ' in der Befehlszeile (bash)??

  2. Strings fehlen nach dem Verketten von zwei oder mehr variablen Strings in Bash?

  3. Kommentare in Bash-Skripten schreiben:Einzeilige, Inline- und mehrzeilige Kommentare

  4. Beispiele für Bash-For- und While-Schleifen

  5. Bash-Verlauf ohne Zeilennummern

So kommentieren Sie in Bash

Syntax und Beispiele für Bash-Case-Anweisungen

So lesen Sie Dateien Zeile für Zeile in Bash

So lesen Sie eine Datei Zeile für Zeile in Bash

Bash brechen und fortfahren

Bash Exit-Befehl und Exit-Codes