考慮,下面的代碼按預期工作:爲什麼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)。 –