【发布时间】:2012-12-06 23:19:29
【问题描述】:
考虑一下,下面的代码按预期工作:
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
更新:
只是为了确认问题是否出在相等运算符上:
#!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
[kent@TEST]$ sh test.sh
Always true.
更新:
总结:
- 使用
=与上面的==相同,但已过时。 - 时刻注意您的空间。
【问题讨论】:
-
= 是赋值运算符,而 == 和 === 是比较运算符。
-
我的观察结果不同。当我用户 '=' 被空格包围时,它正确地充当比较运算符。 See here for more examples.
标签: unix if-statement ksh