多行 bash 命令中的注释

多行 bash 命令中的注释

这个单命令 BASH 脚本文件很难理解,所以我想为每个操作写一条注释:

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

(sed 只是一个例子,实际上它是 greps、trs 和 awks 的混合)

我讨厌重复行,或者让每个注释远离它适用的行。
但同时 BASH 似乎不允许“内联”注释。

有什么优雅的方法可以解决这个问题吗?

答案1

将管道放在行尾,并在其后添加注释:

$ 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

答案2

我更喜欢这种方式。它允许你使用以下方式编写多行注释命令分组

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

答案3

如果你在评论时碰巧遇到了这个问题-pipeline 多行命令:

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

除非你正在做一些非常不正当的事情,比如自动评论,否则我看不出有什么理由选择这个而不是 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`

或者:

$ 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

相关内容