shell “==“ vs.“-eq“

"==“和”-eq"的区别:"=="是判断字符串是否相等,"-eq"是判断字符串对应的数字值是否相等。因为bash中所有的变量都是字符串。对变量进行数值计算时,只不过是临时把字符串转换成数字,然后计算,计算后再把结果数字转换为字符串。

#!/bin/bash

num1=123  #num1 is a string, length 3
num2=0123 #num2 is a string, length 4

echo -n "when use '=='  to compare: "
if [ $num1 == $num2 ];then
  echo "$num1 and $num2 equal"
else
  echo "$num1 and $num2 not equal"
fi

echo -n "when use '-eq' to compare: "
if [ $num1 -eq $num2 ];then
  echo "$num1 and $num2 equal"
else
  echo "$num1 and $num2 not equal"
fi

执行结果:

when use '=='  to compare: 123 and 0123 not equal
when use '-eq' to compare: 123 and 0123 equal

==直接比较字符串,-eq比较字符串对应的数字值。

同理:

!= # -ne, not equal

> # -gt, great than

< # -lt, low than

>= # ge, great and equal

<= # le, low and equal


版权声明:本文为qq_31701279原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。