Комментарии в многострочной команде bash

12634
Nicolas Raoul

Этот файл командного сценария BASH сложен для понимания, поэтому я хочу написать комментарий для каждого из действий:

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

(sed - просто пример, на самом деле это смесь greps, trs и awks)

Я бы не хотел дублировать строки или размещать каждый комментарий далеко от той строки, к которой он относится.
Но в то же время BASH, по-видимому, не допускает «встроенных» комментариев.

Любой изящный способ решить эту проблему?

26

3 ответа на вопрос

42
Mikel

Поместите трубы в конце строки с комментариями после нее:

$ 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

Если вы столкнулись с этим вопросом, пытаясь прокомментировать многострочную команду, не относящуюся к трубопроводу:

$ 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` 

Если вы не делаете что-то действительно извращенное, например, автоматизируете комментирование, я не вижу причин, чтобы предпочесть это, а не ответ Микеля за канал, но если вы действительно хотели:

$ 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` 

или же:

$ 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` 

Источник: http://unix.derkeiler.com/Newsgroups/comp.unix.solaris/2005-07/0991.html

Очень приятно - спасибо за указание на это! Brandon Rhodes 12 лет назад 0
6
rox

Well, I prefer this way,

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