在bash shell中如何比较两个数字

时间:2019-11-20 08:52:49  来源:igfitidea点击:

问题

在bash shell中如何比较数字?

解决方案

可以使用test命令通过以下运算符比较两个数字:

  • INTEGER1 -eq INTEGER2INTEGER1等于INTEGER2
  • INTEGER1 -ge INTEGER2INTEGER1大于或等于INTEGER2
  • INTEGER1 -gt INTEGER2INTEGER1大于INTEGER2
  • INTEGER1 -le INTEGER2INTEGER1小于或等于INTEGER2
  • INTEGER1 -lt INTEGER2INTEGER1小于INTEGER2
  • INTEGER1 -ne INTEGER2INTEGER1不等于INTEGER2

test语句

test命令计算表达式,如果计算结果为真,则返回0。否则返回1。

test condition  
test condition && do_something || do_nothing_due_to_false
[ condition ] && do_something || do_nothing_due_to_false

if语句

if命令的语法如下:

if [ condition ]; then
       do_run_this_due_to_true_condition
else
       do_run_this_due_to_false_condition
fi

示例:在bash找那个比较两个数字

3是否大于5?返回1表示假。

x=3
y=5
[ $x -gt $y ] 
echo $?

输出示例:

1

5是否大于3,返回0,表示5确实大于3

x=5
y=3
[ $x -gt $y ] 
echo $?
0

在linux中,命令和程序一般都是成功用0表示;不成功则使用非0表示,并且根据不同的非0值表示不同的错误原因。

在bash shell中,还可以使用以下语法,更加简洁:

[ condition ] &&  true-command || false-command

例如:

x=5
y=3
[ $x -gt $y ]  && echo " $x > $y " || echo "$x <= $y"