shell中的算术比较

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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
答案

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

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

另一答案

替换<with -lt

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

另一答案

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

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

以上是关于shell中的算术比较的主要内容,如果未能解决你的问题,请参考以下文章

Shell脚本学习二:Shell中的算术运算

shell脚本中的算术运算和条件测试语句

shell中的let vs expr vs双括号算术

shell脚本中的算术运算

shell中的算术运算

shell 特殊字符