2012-12-03 91 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 /接受它! –