考虑,下面的代码按预期工作:为什么ksh中的以下IF条件总是评估为真?
if [[ $SOME_VARIABLE = "TRUE" ]]; then
echo "Only echoed when \$SOME_VARIABLE stores string \"TRUE\"."
fi
但是当我删除周围相等运算符它总是为0退出状态(空间中的至少这就是我假设,因为它被视为必须返回真):
if [[ $SOME_VARIABLE="TRUE" ]]; then
echo "Always true."
fi
UPDATE:
只是为了CONFI RM问题是否出在平等的经营者或不:
#!usr/bin/ksh
SOME_VARIABLE=FALSE
if [[ $SOME_VARIABLE == "TRUE" ]]; then
echo "Only echoed when \$SOME_VARIABLE stores string \"TRUE\"."
fi
if [[ $SOME_VARIABLE=="TRUE" ]]; then
echo "Always true."
fi
[[email protected]]$ sh test.sh
Always true.
UPDATE:
摘要:
- 使用
=
是同上==
,但已经过时了。 - 始终注意你的空间。
=是赋值运算符,而==和===是比较运算符。 – SISYN
我的观察结果是不同的。当我使用'='用空格时,它正确地作为比较运算符。 [在这里看到更多的例子](http://www.well.ox.ac.uk/~johnb/comp/unix/ksh.html#branching)。 –
.. [Korn中的字符串比较](http://www.well.ox.ac.uk/~johnb/comp/unix/ksh.html#comparisons)。 –