SHELL下是没有小数处理的,能进行运算的只能是-2^30到2^30-1范围的整数,否则溢出。
具体可以用的运算方式有:
1 | [root@root ~]$ i=$[9 / 2]; echo i=$i; |
很多最小安装的系统不会有expr,可以使用内置命令:
1 | [root@root ~]$ i=let i=9/2 ; echo i=$i; |
如果需要保留小数,比如两位小数,可以使用awk实现,awk真是强大:
1 | [root@root ~]$ i=`awk BEGIN'{printf "%.2fn", 9/2 }'` ; echo i=$i; |
运算符类型
按位运算符
~, < <, >>, &, |, ^
$[]表示形式告诉 shell 对方括号中的表达式求值
表达式替换
$[ ] 和 $(())
两种格式功能一样,所有的 shell 的求值都是用整数完成
$[ ] 可以接受不同基数的数字
赋值运算符
=、+=、-=、*=、/=、%=、&=、^=、|=、< <=、>>=