Umbrechen langer Bash-Befehle in Skriptdateien

15

Wie bricht man einen langen Befehl in die nächste Zeile einer Bash-Skriptdatei ein?

Als einfaches Beispiel möchte ich den Befehl ausführen pushd . && cd /foo/bar && ls && popd

Über die Konsole kann ich Folgendes tun:

pushd . \
&& cd /foo/bar \
&& ls \
&& popd

Und das umschließt die Linie. Derselbe Code in einer Skriptdatei erzeugt jedoch einen Fehler.

Wie umbrechen Sie diese Zeilen, um sie schön zu formatieren?

Jen S.
quelle

Antworten:

16

Funktioniert gut hier. Stellen Sie sicher, dass der Backslash das allerletzte Zeichen in der Zeile ist und dass die Datei * nix-Zeilenenden verwendet.

Ignacio Vazquez-Abrams
quelle
Funktioniert auch hier einwandfrei, aber auch das Entfernen der \ 's und &&' s insgesamt und das Verlassen der Befehle in separaten Zeilen ...
Brian Kintz
2
@elmugrat: Aber dann verlierst du die bedingte Verkettung.
Ignacio Vazquez-Abrams
Ahhh stimmt ... irgendwie vergessen.
Brian Kintz
2
Dieses Problem betraf die Zeilenenden, was auf die Tatsache zurückzuführen ist, dass ich cygwin unter Windows verwende und nicht auf ein anderes Betriebssystem. Vielen Dank.
Jen S.