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



当我在算术比较中遇到这个问题时,我正在尝试学习 shell 脚本并按照教程点上的教程进行操作。

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

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

您要将其更改为:

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 (<=)

相关内容

  • 没有找到相关文章

最新更新