shell整形计算浮点型运算

整形计算

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

猜你喜欢

转载自blog.csdn.net/qq_53368181/article/details/130057330