bash行继续和评论

时间:2018-05-30 16:32:36

标签: bash

为什么评论在第三个例子中被回应?

$ 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 

2 个答案:

答案 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是下一个单词/参数,因为注释必须以#开头,所以第三个命令没有注释。