Kommentare in einem mehrzeiligen Bash-Befehl

12773
Nicolas Raoul

Diese BASH-Skriptdatei mit einem einzigen Befehl ist schwer zu verstehen. Daher möchte ich für jede Aktion einen Kommentar schreiben:

echo 'foo' \ | sed 's/d/a/' \ | sed 's/e/b/' \ | sed 's/f/c/' \ > myfile 

(sed ist nur ein beispiel, eigentlich ist es eine mischung aus greps und trs und awks)

Ich würde es hassen, Zeilen duplizieren zu müssen oder jeden Kommentar weit weg von der Zeile zu haben, für die er gilt.
Gleichzeitig scheint BASH jedoch keine "Inline" -Kommentare zuzulassen.

Irgendwelche eleganten Wege, um dieses Problem zu lösen?

26

3 Antworten auf die Frage

42
Mikel

Setzen Sie die Rohre am Ende der Zeile mit den folgenden Kommentaren:

$ echo 'foo' | sed 's/f/a/' | # change first f to a sed 's/o/b/' | # change first o to b sed 's/o/c/' # change second o to c abc 
13
ZakW

Wenn Sie auf diese Frage stoßen und einen mehrzeiligen Befehl außerhalb der Pipeline kommentieren möchten:

$ echo 'foo' | sed -e 's/f/a/' `: # change first f to a` \ -e 's/o/b/' `: # change first o to b` \ -e 's/o/c/' `: # change second o to c` 

Wenn Sie nicht etwas wirklich Perverses wie das Automatisieren von Kommentaren machen, kann ich keinen Grund dafür finden, dass dies der Antwort von Mikel für eine Pipe vorgezogen wird, aber wenn Sie wirklich wollten:

$ echo 'foo' | sed 's/f/a/' | `: # change first f to a` \ sed 's/o/b/' | `: # change first o to b` \ sed 's/o/c/' `: # change second o to c` 

oder:

$ echo 'foo' | sed 's/f/a/' `: # change first f to a` | sed 's/o/b/' `: # change first o to b` | sed 's/o/c/' `: # change second o to c` 

Quelle: http://unix.derkeiler.com/Newsgroups/comp.unix.solaris/2005-07/0991.html

Sehr schön - danke, dass Sie mich darauf hingewiesen haben! Brandon Rhodes vor 13 Jahren 0
6
rox

Nun, ich bevorzuge diesen Weg

echo 'foo' | { # change first f to a # you can add more lines of comment on the command options sed 's/f/a/' } | { # change first o to b sed 's/o/b/' } | { # change second o to c sed 's/o/c/'  }