跳到主要内容

Shell 脚本中如何比较两个数字?

参考答案:

在Shell脚本中,您可以使用-eq-ne-gt-ge-lt-le这些条件测试运算符来比较两个数字。这些运算符分别表示“等于”、“不等于”、“大于”、“大于等于”、“小于”和“小于等于”。

以下是一些示例:

#!/bin/bash

num1=10
num2=20

if [ $num1 -eq $num2 ]
then
   echo "两个数字相等"
elif [ $num1 -gt $num2 ]
then
   echo "num1 大于 num2"
elif [ $num1 -lt $num2 ]
then
   echo "num1 小于 num2"
else
   echo "没有比较结果"
fi

注意,在使用这些比较运算符时,数字之间不能有空格。否则,Shell会将其视为字符串比较,这可能会导致意外的结果。

此外,当比较浮点数时,-eq-ne-gt-ge-lt-le这些运算符就不再适用了。对于浮点数比较,您可以使用bc命令或者awk命令。例如:

#!/bin/bash

num1=10.5
num2=20.5

if (( $(echo "$num1 > $num2" | bc -l) ))
then
   echo "num1 大于 num2"
elif (( $(echo "$num1 < $num2" | bc -l) ))
then
   echo "num1 小于 num2"
else
   echo "两个数字相等"
fi

这个脚本使用bc命令进行浮点数的比较。bc -l选项告诉bc使用标准数学库,这使得它可以处理浮点数。