首先要明白一个概念:bash中所有的变量都是字符串。 对变量进行数值计算时,只不过是临时把字符串转换成数字,然后计算,计算后再把结果数字转换为字符串。
再说"==“和”-eq"的区别
"=="是判断字符串是否相等。
"-eq"是判断字符串对应的数字值是否相等。
举个例子。
创建eq.sh脚本
>vi eq.sh 1
内容如下
#!/bin/bash num1=123#num1是长度为3的字符串 num2=0123#num2是长度为4的字符串 echo "======================================" echo -n "用==比较时:" if [ $num1 == $num2 ] thenecho "$num1和$num2相等" elseecho "$num1和$num2不相等" fi echo "======================================" echo -n "用-eq比较时:" if [ $num1 -eq $num2 ] thenecho "$num1和$num2相等" elseecho "$num1和$num2不相等" fi
1234567891011121314151617181920212223运行测试
>bash eq.sh 1
结果一目了然
====================================== 用==比较时:123和0123不相等 ====================================== 用-eq比较时:123和0123相等 1234
结论:
==直接比较字符串,-eq比较字符串对应的数字值。
!=、>、 <、 >=、 <= 与-ne、 -gt、 -lt、 -ge、 -le 的区别依此类推