有没有解释为什么评论在第三个例子中被回应?
$ echo a b \
> c # test
a b c
$ echo a b c \
> # test
a b c
$ echo a b c \
> \ # test
a b c # test
$ echo a b c \
> \ # test
a b c
Run Code Online (Sandbox Code Playgroud)
在bash中,#注释的开始只有当它在开始一个的字。按照此规则,以下两个命令行都没有注释:
$ echo a b c# test
a b c# test
$ echo a b c \ # test
a b c # test
Run Code Online (Sandbox Code Playgroud)
在上述第一种情况下,#是单词的一部分,c#而#不是开头。
在上面的第二种情况(您的情况)中,#是单词的一部分 #(其中第一个字符为空白,#第二个字符为空白)。 #不是开头,因此不会发表评论。
通常,外壳将空格视为单词分隔符。通过逃避空格,它失去了特殊的解释,而变成了另一个角色。
是否使用续行不会改变这一点。
来自标题为“评论”的部分man bash:
以#开头的单词 会导致该单词和该行上的所有剩余字符被忽略。[重点已添加。]