Kommentare in einem mehrzeiligen Bash-Befehl

32

Diese BASH-Skriptdatei mit nur einem Befehl ist schwer zu verstehen. Daher möchte ich zu jeder 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 von der Zeile entfernt zu haben, auf die er zutrifft.
Gleichzeitig scheint BASH jedoch keine "Inline" -Kommentare zuzulassen.

Irgendeine elegante Möglichkeit, dieses Problem zu lösen?

Nicolas Raoul
quelle

Antworten:

51

Fügen Sie die Pfeifen am Ende der Zeile mit den Kommentaren dahinter ein:

$ 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
Mikel
quelle
Sinnvoll
15

Wenn Sie diese Frage beim Kommentieren eines mehrzeiligen Befehls ohne Pipeline beantworten:

$ 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 tun, wie das Automatisieren von Kommentaren, kann ich keinen Grund sehen, dies Mikel's Antwort für eine Pipe vorzuziehen, 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

ZakW
quelle
10

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/' 
}
Rox
quelle