内联评论bash?

我希望能够在单行命令中注释一个单一的标志。 Bash似乎只有`从#到结束'的评论。 我正在看像这样的技巧:

ls -l $([ ] && -F is turned off) -a /etc 

这是丑陋的,但总比没有好。 有人有更好的build议吗?

UPDATE

以下似乎工作,但我不知道是否是便携式:

 ls -l `# -F is turned off` -a /etc 

我发现最简单的(也是最可读的)就是复制这一行,并注释掉原始版本:

 #Old version of ls: #ls -l $([ ] && -F is turned off) -a /etc ls -l -a /etc 

我的首选是:

在BASH脚本中进行注释

这将有一些开销,但从技术上说,它确实回答你的问题

 echo abc `#put your comment here` \ def `#another chance for a comment` \ xyz etc 

对于pipe道来说,有一个干净的解决scheme,没有开销

 echo abc | # normal comment OK here tr az AZ | # another normal comment OK here sort | # the pipelines are automatically continued uniq # final comment 

如何为多线命令放置线条评论

$(: ...)有点不那么难看,但还是不好。

如何将其存储在一个variables?

 #extraargs=-F ls -l $extraargs -a /etc 

大多数命令都允许参数以任何顺序出现。 只需将注释标志移动到行尾即可:

 ls -l -a /etc # -F is turned off 

然后打开它,只是取消注释并删除文本:

 ls -l -a /etc -F 

这是我在多个pipe道命令之间进行内联注释的解决scheme。

示例未注释的代码:

  #!/bin/sh çat input.txt \ | grep something \ | sort -r 

pipe道注释的解决scheme(使用帮助函数):

  #!/bin/sh pipe_comment() { cat - } cat input.txt \ | pipe_comment "filter down to lines that contain the word: something" \ | grep something \ | pipe_comment "reverse sort what is left" \ | sort -r 

或者,如果你愿意,这里没有助手function的解决scheme是相同的,但它有点混乱:

  #!/bin/sh cat input.txt \ | cat - `: filter down to lines that contain the word: something` \ | grep something \ | cat - `: reverse sort what is left` \ | sort -r 

如果你知道一个variables是空的,你可以用它作为注释。 当然,如果它不是空的,它会搞乱你的命令。

 ls -l $ {1#-Fclosures} -a / etc

§10.2。 参数替代

如果评论是值得的,那么它可能会在行的末尾,也可能在行的末尾。 在任何语言的评论之前和之后,我很less发现需要使用代码进行在线评论。

哦,有一个例外,这是我通常使用的使用“{comments}”的SQL方言。 偶尔,我会写:

 CREATE UNIQUE INDEX u1_table ON Table(...); CREATE {DUPS} INDEX d1_table ON Table(...); 

但即使这样也是一个延伸。