这个单命令 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