是否可以在带有转义换行符的长命令中插入注释?

是否可以在带有转义换行符的长命令中插入注释?

我有一个很长的命令行,比下面的示例长但类似。我想按照这里显示的意思为单个参数添加注释:

ssh -N \
    -R :10000:10.0.0.1:80 \ # test system
    -R :10001:10.0.0.2:80 \ # integration system
    -R :10002:10.0.0.3:80 \ # database foo
    -R :10003:10.0.0.4:80 \ # some other server
    example.com

但遗憾的是,这不起作用,因为\这里的字符不再转义换行符。相反,它会转义 an 前面的空格,#从而阻止#将其解析为注释的开头(#如果应将其解析为注释的开头,则可能不会出现在标记内)。

这也不起作用,因为这里,不是转义\#而是#阻止\解释。

-R :10000:10.0.0.1:80 # test system \

有没有办法以某种方式混合单个长命令的注释和命令行参数(可能在单独的行上)?如果没有,您建议我做什么来以某种方式将传递给命令的数据与描述它的注释相关联?

答案1

来自这个 StackOverflow 问题Bash:如何为多行命令添加行注释?这个答案


本质上是使用 bash 的反引号命令替换可以将这些注释放在长命令行的任意位置,即使命令行被拆分成多行。我已将 echo 命令放在示例前面,以便您可以执行该示例并查看其工作原理。

echo CommandName InputFiles `#1st comment` \
             --option1 arg1 `#2nd comment` \
             --option2 arg2 `#3rd comment`

另一个例子是您可以在一行上的不同位置放置多个注释。

some_cmd --opt1 `#1st comment` --opt2 `#2nd comment` --opt3 `#3rd comment`

相关内容