使用管道创建Shell脚本并使用反斜杠继续行时,我想以健壮,可读和可移植的方式在单独的行上插入注释。
例如,给出以下未注释的多行命令(为清晰起见,从@DigitalRoss盗取):
echo abc |
tr a-z A-Z |
sort |
uniq
...从美学上讲,以下内容与我要完成的工作最接近,但是出于明显的原因,它不起作用...是的,我很清楚,这通常不值得评论:
# Perform critical system task.
# NOTE - An example of what does *not* work.
echo abc |
# Convert lowercase to uppercase.
tr a-z A-Z |
# Sort the results.
sort |
# Only show unique lines.
uniq
现有的相关答案对我来说并不令人满意,如下所示:
首先,glenn jackman的答案(向数组添加参数,然后执行数组)适用于单个命令,但不适用于流水线操作(即使这样做,也增加了我想避免的复杂性)。
其次,@ Gilles在这里的答案(使用:
)也似乎不适用于流水线,因为它改变了流水线:
$ echo "abc" | :
$
(注意:如果有一个等效项可以:
传递未修改的输出,这在美学上是可以接受的,但我找不到它。我可以编写一个自定义的,但是会降低可移植性。)
最后,DigitalRoss关于StackOverflow的答案的最后部分很好地用于在同一行上添加注释,但是我强烈希望在单独的行上添加注释。否则,当行的长度变化很大时,可读性会降低:
echo abc | # normal comment OK here`
/usr/local/bin/really/long/path/ridiculously-long-filename.sh | # another normal comment OK here
sort | # the pipelines are automatically continued
uniq # final comment
我正在寻找能够保持可读性并最大程度地减少复杂性的答案,或者寻找一些关于为什么我要寻找的东西不可行的背景。
我想我将删除最后的编辑。一个问题包含问题,对答案的反驳以及答案本身是很不寻常的,但是在这里,解释为什么其他答案不起作用的部分很有必要。rozcietrzewiacz的回答和您的评论共同解释了这个问题(由于问题与他所描述的完全不同,我个人将发布一个单独的答案并接受该回答,但这是
—
可行的
理解-感谢您的反馈;学过的知识!
—
罗伊斯·威廉姆斯
i++; // increment i by one
。我建议您阅读“编程风格的要素”