Похожие вопросы

Ошибка шпатлевки: операция / bin / bash не разрешена при подключении к Cygwin sshd
В чем разница между set, env, declare и export при установке переменной в оболочке Linux?
Как заставить Network Manager повторно сканировать соединения?
Putty: войдите в систему, выполните команду / измените переменную среды и не закрывайте сеанс
Двойные трубы в Linux
Запуск сценария bash из docky
Скрипт Bash выполняется, но команда' until ' не найдена
Обрабатывать имя файла с пробелами внутри Bash-скрипта
Как удалить все файлы, начинающиеся с определенной строки в Linux
Экранирование восклицательного знака в оболочке (отрицание для конструкции if/then)?
Запуск devcon.exe правильно (включение / выключение устройства из командной строки в Windows 10)
Нет такого файла или каталога после ввода $PATH в терминале
Как перезаписать файл с помощью echo?
Ошибки синтаксического анализа из-за специальных символов в записях DNS txt
Переименование файлов с помощью текстового файла [закрыт]

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

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

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

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

мне не хотелось бы дублировать строки или иметь каждый комментарий далеко от строки, к которой он применяется.


Но в то же время BASH, похоже, не допускает "встроенных" комментариев.

любой элегантный способ решить эту проблема?

5
задан Nicolas Raoul
источник

3 ответов

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

$ 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
42
отвечен Mikel 2011-01-28 06:31:17
источник

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

$ 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

13
отвечен ZakW 2011-05-30 11:50:52
источник

Ну, я предпочитаю этот способ,

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/' 
}
6
отвечен rox 2015-11-11 17:58:18
источник

Другие вопросы bash comments pipe sh