比较
$string
和"$string"
:
string="xx yy zz"
if [[ $string == "$string" ]]; then
echo "Strings are equal."
else
echo "Strings are not equal."
fi
我们得到:字符串是相等的。
set -- $string
echo $#
3
使用
$string
设置参数可获得 3 个参数。
set -- "$string"
echo $#
1
使用
"$string"
设置参数可获得 1 个参数。产生这种差异是因为
[[
超级非常非常神奇。它是 bash 中解析输入时处理的语法糖,而不是真正的命令。根据上下文的不同,[[
内部的引用含义略有不同。在 == 的情况下,可以省略 qoutes,因此字符串是相等的。
相反,
[
或test
是正常命令。您可以检查以下内容如何失败:
[ $string == "$string" ]
小提示,实际的比较运算符只是
=
,但 bash 处理也 ==
相同。