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

Вставить кавычки в строковую переменную bash
Как я могу SSH в "Bash на Ubuntu на Windows 10"?
Нет необходимости в экспорте при выполнении функций в subshell
Shell-скрипт, чтобы передать аргументы в другой скрипт
Что не так с моим сценарием bash, чтобы сохранить последние x-файлы и удалить остальные?
Как остановить терминал bash от добавления частей предыдущих команд в текущую строку?
Использование find или grep для поиска имен файлов с акцентированными символами из другой системы кодирования (Windows в Linux)
Rsync копировать символические ссылки и исключить подпапку
перейти в bash
Как я могу выполнить команду и немедленно выйти из терминала?
gnome-terminal: как сохранить символические ссылки рабочего каталога при открытии новой вкладки?
Как сменить оболочку по умолчанию в Cygwin?
Терминал Linux-замороженное обновление ввода, но может выполнять команды?
Как сделать Bash моей оболочки по умолчанию на Ubuntu?
Linux ip route: как сделать так, чтобы весь внешний трафик шел через один интерфейс

Комментарии в многострочной команде 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