shell中的算术比较

时间:2009-11-23 16:35:07

标签: shell

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

#!/bin/sh
let a=30
let b=100
let x=$a-$b
echo $a $b $x
[ $a < $b ] && { echo ok; }

输出:

30 100 -70
./x: line 6: 100: No such file or directory

4 个答案:

答案 0 :(得分:4)

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

编辑:实际上现在看这个问题似乎很明显。 “&lt;”字符执行文件重定向,这是shell尝试执行的操作。您可以通过执行\来履行该角色。相反,但最初说明将进行字符串比较而不是数字比较。

答案 1 :(得分:0)

替换&lt;用-lt

另外,失去了“让”。这不是基本的。比尔盖茨和史蒂夫鲍尔默(开发者!)与这个宇宙毫无关系。

答案 2 :(得分:0)

“let”在shell中完全没问题,与M $ basic或者什么无关。 @OP,您可以使用bc来比较数字,特别是如果您还要比较浮点数。有关类似示例,请参阅here

答案 3 :(得分:-1)

#!/bin/sh
let a=30
let b=100
let x=$a-$b
echo $a $b $x
if(($a < $b)) then 
  echo ok
fi