【问题标题】:Shell Scripting Arithmetic Operators for Comparison用于比较的 Shell 脚本算术运算符
【发布时间】:2012-12-03 00:18:44
【问题描述】:

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

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

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

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

【问题讨论】:

  • 正如你的标题所说的 ksh(但你的标签是 bash),你可以在 (( ... == ... )) 测试中使用 == (我也相信这在 bash 中是可以的)。祝你好运。
  • @Jack:答案是否解决了问题?如果是这样,您能否接受它以将问题标记为已解决?

标签: bash shell scripting comparison operators


【解决方案1】:

你想把它改成:

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 (

【讨论】:

  • @Jack np =) 如果您发现答案有用,您可以投票/接受它!
猜你喜欢
  • 2011-03-02
  • 2019-12-16
  • 2020-12-10
  • 1970-01-01
  • 1970-01-01
  • 2020-02-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多