shell中的算术比较

问题描述 投票:3回答:4

我想比较一个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
shell
4个回答
4
投票

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

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


0
投票

替换<with -lt

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


0
投票

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


-1
投票
#!/bin/sh
let a=30
let b=100
let x=$a-$b
echo $a $b $x
if(($a < $b)) then 
  echo ok
fi
© www.soinside.com 2019 - 2024. All rights reserved.