区别:和#对于Bash评论

时间:2017-09-23 00:21:44

标签: bash

今天我看到一个bash脚本使用冒号来表示评论。使用冒号和哈希标记之间的区别是什么?

: This is a comment.
# This is also a comment.

首先,我知道你不能使用冒号作为结尾评论:

cd somedir : This won't work as a comment.

但上述例子有效的事实让我对如何评估:感到困惑。

2 个答案:

答案 0 :(得分:9)

:只是true的别名,而true会忽略其参数:

# Does nothing:
true foo bar etc hello

# Does the same:
: foo bar etc hello

这不是评论,不应该用作评论,因为它的所有参数仍然被解析和评估:

: This "comment" actually executes this command: $(touch foo)
ls -l foo

或者像这里一样,StackOverflow的语法突出显示中间的命令实际上只是文本,即使人类没有:

: The command below won't run:
echo "Hello World"
: because the surrounding "comments" each contain a ' characters

答案 1 :(得分:1)

':'是一个shell内置命令,它只会扩展参数并返回true。来自bash man page

: [arguments]
No effect; the command does nothing beyond expanding arguments
and performing any specified redirections. A zero exit code is
returned.

#是评论。但它只适用于单行。

您可以阅读更多关于':'命令here和更好的答案here