考虑
echo \ # this is a comment
foo
Run Code Online (Sandbox Code Playgroud)
这给出:
$ sh foo.sh
# this is a comment
foo.sh: line 2: foo: command not found
Run Code Online (Sandbox Code Playgroud)
在网上搜索后,我在姊妹网站 Stack Overflow 上找到了DigitalRoss的解决方案。所以一个人可以做
echo `: this is a comment` \
foo
Run Code Online (Sandbox Code Playgroud)
或者
echo $(: this is a comment) \
foo
Run Code Online (Sandbox Code Playgroud)
但是,DigitalRoss 没有解释为什么这些解决方案有效。我很感激解释。他回复了一条评论:
曾经有一个 shell
goto命令分支到指定的标签,如:这里。该goto走了,但你仍然可以使用的: whatever语法...:是一种解析的评论了。
但我想要更多细节和上下文,包括对可移植性的讨论。
当然,如果有人有其他解决方案,那也很好。
另请参阅较早的问题如何在 shell 脚本中注释多行命令?.
从下面的讨论中获取信息。这`: this is a comment`只是一个命令替换。的输出: …
当调用长的、需要大量切换的命令时,最好将它们写在 shell 脚本中。有没有一种简单的方法可以在这样的脚本中注释行?我尝试了以下方法,但都不起作用。
# the \ is also commented out, resulting in "command" and "--good-switch".
command \
#--bad-switch \
--good-switch \
# seems to send an extra argument to the command
command \
\ #--bad-switch \
--good-switch
Run Code Online (Sandbox Code Playgroud)