用于比较的Shell脚本算术运算符

时间:2012-12-03 00:18:44

标签: bash shell scripting comparison operators

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

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

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

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

1 个答案:

答案 0 :(得分: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(&gt;)
    • -ge(&gt; =)
    • -lt(&lt;)
    • -le(&lt; =)