"==“和”-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