整形计算
1.$((num1+num2))
[shuqiq@shuqiq mybash]$ echo $((1+2))
3
[shuqiq@shuqiq mybash]$ echo $((1*2))
2
2.$[num1+num2]
[shuqiq@shuqiq mybash]$ echo $[1+2]
3
[shuqiq@shuqiq mybash]$ echo $[1*2]
2
3.expr num1 + num2
[shuqiq@shuqiq mybash]$ expr 1 + 1
2
[shuqiq@shuqiq mybash]$ expr 1 * 1
expr: 语法错误
[shuqiq@shuqiq mybash]$ expr 1 \* 1
1
[shuqiq@shuqiq mybash]$
4.let命令:和双小括号 (( )) 一样,let 命令也只能进行整数运算,不能对小数(浮点数)或者字符串进行运算。
let b=$b+1
echo $b
注意:对于类似let x+y
这样的写法,Shell 虽然计算了 x+y 的值,但却将结果丢弃;若不想这样,可以使用let sum=x+y
将 x+y 的结果保存在变量 sum 中。
let b=$1+$2
echo $b
整形比较
1.((num1=num2))
if (($1>$2))
then
echo "1"
else echo "0"
fi
2.test num1 -eq num2
test命令的参数:
"-eq" = "=" "-ne" = "!="
"-lt" = "<" "-le" = "<="
"-gt" = ">" "-ge" = ">="
if test $1 -eq $2
then
echo '1'
else echo '0'
fi
3.[num1 -eq num2]
if [ $1 -eq $2 ]
then
echo '1'
else echo '0'
fi
浮点数计算
浮点数计算需要用到bc计算器
安装bc计算器
yum -y install bc
计算
"salce=1;num1+num2" | bc
#salce:保留几位小数
浮点数比较
浮点数比较也需要用到bc计算器
if [ $(echo "$a>=$b" | bc) -eq 1 ]
then
echo '1'
else echo '0'
fi
####或者下面这几种
if [ `echo "$a>=$b" | bc` -eq 1 ]
then
echo '1'
else echo '0'
fi
#
if ((`echo "$a>=$b" | bc` == 1))
then
echo '1'
else echo '0'
fi
#
if test `echo "$a>=$b" | bc` -eq 1
then
echo '1'
else echo '0'
fi