为什么评论在第三个例子中被回应?
$ 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
答案 0 :(得分:4)
在bash中,#
仅在位于字的开头时才会发表评论。根据此规则,以下两个命令行都没有注释:
$ echo a b c# test
a b c# test
$ echo a b c \ # test
a b c # test
在上面的第一个案例中,#
是单词c#
的一部分,#
不在开头。
在上面的第二种情况(您的情况)中,#
是单词 #
的一部分(其中第一个字符为空白,#
为第二个字符)。 #
不在开头,因此不会发表评论。
通常,shell会将空白视为单词分隔符。通过逃避空白,它失去了特殊的解释,变成了另一个角色。
使用或不使用延续行不会改变这一点。
来自man bash
中的评论部分:
单词以开头#会导致该单词和剩余单词 要忽略的那一行上的字符。 [重点补充。]
答案 1 :(得分:2)
似乎 # test
是下一个单词/参数,因为注释必须以#
开头,所以第三个命令没有注释。