shell 中的算术比较

Pet*_*Mmm 3 shell

我想比较 shell 脚本 (sh) 中的两个数值,但它不起作用:

#!/bin/sh
let a=30
let b=100
let x=$a-$b
echo $a $b $x
[ $a < $b ] && { echo ok; }
Run Code Online (Sandbox Code Playgroud)

输出:

30 100 -70
./x: line 6: 100: No such file or directory
Run Code Online (Sandbox Code Playgroud)

小智 5

我认为应该是 -lt(代表小于)而不是“<”。“<”用于字符串比较。

编辑:实际上现在看这个似乎很清楚问题是什么。“<”字符执行文件重定向,因此这就是 shell 正在尝试执行的操作。您可以通过执行 \< 来转义该字符,但正如最初所述,它将进行字符串比较而不是数字比较。