2012-12-03 61 views
1

我想學習shell腳本和跟隨tutorialspoint上的教程,當我遇到這個問題與算術比較。Shell腳本算術運算符進行比較

$VAL1=10 
$VAL2=20 
$VAL3=10 

if [ $VAL1 == $VAL2 ] 
then 
    echo "equal" 
else 
    echo "not equal" 
fi 

但我得到[: ==: unexpected operator我不知道爲什麼比較運算符沒有工作。我知道我也可以使用理性的操作符,但是我想知道爲什麼'=='沒有被定義。

+0

爲您的標題所說的ksh(但你的標籤說的bash),你可以使用''==內'((... == ...))''測試(我也相信在bash中可以)。祝你好運。 – shellter

+0

@傑克:答案是否解決了這個問題?如果是這樣,你能否接受它來標記問題已解決? – MERose

回答

11

你想將它更改爲:

VAL1=10 
VAL2=20 
VAL3=10 

if [ "$VAL1" -eq "$VAL2" ] 
then 
    echo "equal" 
else 
    echo "not equal" 
fi 

說明:

  • 不要爲左值加$(變量被分配)的分配。
  • 始終在測試中用雙引號包裹變量。該[: ==: unexpected operator錯誤,你得到的是因爲,由於VAL1/VAL2沒有適當以前分配,測試的ksh的擴張實際上最終解決這樣的:if [ == ] - (但你看到它實際上不是一個問題,關於==是不確定的)
  • 使用數值比較,而不是==符號如下:
    • -eq(==)
    • -ne(!=)
    • -gt(>)
    • -ge(> =)
    • -lt(<)
    • -le(< =)
+0

@Jack np =)如果你找到了有用的答案,你可以upvote /接受它! –