2016-08-11 1 views
2

ich ein mehrzeiliges bedingten wie dieses:Shell Scripting: intersperse Kommentare zwischen mehrzeilige logischen Operatoren

command1 \ 
    && command2 \ 
    && command3 

Das ist in Ordnung, aber ich möchte Kommentare nach jedem Befehl setzen, wie folgt aus:

command1 \ # Comment for command 1. 
    && command2 \ # Comment for command 2. 
    && command3 # Comment for command 3. 

aber das Skript bricht (in Bash und Zsh) wegen eines Parsing-Fehlers.

Gibt es eine Möglichkeit, Kommentare zwischen Multiline-Bedingungen hinzuzufügen?

ANMERKUNG: Ich weiß, dass ich einfach eine Funktion für jeden Befehl erstellen und dann einfach jedem Befehl in seiner Funktionsdefinition Kommentare hinzufügen kann; aber ich möchte das möglichst vermeiden.

Antwort

4

Keine Notwendigkeit, den Kommentar zu entkommen Start. Sie können diese Inline-Kommentare wie verwenden:

pwd && # comment1 
date && # comment2 
tty # comment3 
+1

Es dauerte ein Doppeltnehmen für mich den Unterschied zu sehen, aber ich sehe, dass der Schlüssel ist, um (1) verwenden, die '&&' am Ende des Befehls, nicht davor und (2) die Verwendung von "\" vermeiden. TIL '&&' fungiert als eine Art mehrlinigen "Leim" für sich. Vielen Dank! –

+2

@opert Die Version mit '\' funktioniert nicht, weil '\' immer das nächste Zeichen angibt. Ohne Kommentare ist dies eine neue Zeile, mit Kommentaren ist es nur ein Leerzeichen. Das '\' nach dem Kommentar zu platzieren, funktioniert nicht, weil es in 'zsh' nicht möglich ist, einen Kommentar vor dem Ende einer Zeile zu beenden, daher würde' \ 'in den Kommentar eingefügt. – Adaephon

+0

@Adaephon Danke, macht Sinn. –