1

当我遇到算术比较这个问题时,我正在尝试学习 shell 脚本并遵循 tutorialspoint 上的教程。

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

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

但我得到了一个[: ==: unexpected operator我不确定为什么比较运算符不起作用。我知道我也可以使用理性运算符,但我想知道为什么没有定义'=='。

4

1 回答 1

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(<=)
于 2012-12-03T00:21:27.177 回答