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

Sug*_*ara 1 bash shell scripting comparison operators

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

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

if [ $VAL1 == $VAL2 ]
then
    echo "equal"
else
    echo "not equal"
fi
Run Code Online (Sandbox Code Playgroud)

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

sam*_*hen 11

您想将其更改为:

VAL1=10
VAL2=20
VAL3=10

if [ "$VAL1" -eq "$VAL2" ]
then
    echo "equal"
else
    echo "not equal"
fi
Run Code Online (Sandbox Code Playgroud)

说明:

  • 不要$在赋值中添加左值(被赋值的变量).
  • 始终在测试中用双引号包装变量.[: ==: unexpected operator你得到的错误是因为,由于VAL1/ VAL2之前没有正确分配,你的测试的ksh扩展实际上最终解决了这个问题:if [ == ]- (但是你看到它实际上不是==未定义的问题)
  • 使用以下内容进行数字比较而不是==表示法:
    • -eq (==)
    • -ne (!=)
    • -gt (>)
    • -ge (> =)
    • -lt (<)
    • -le (<=)