shell中的算术运算要求数字和运算符之间不能有空格;
特殊符号也不需要转义;
如果算术表达式中包含其它变量,也不需要用$引用;
常规算术运算:
+:加运算
-:减运算
*:乘运算
/:除运算
%:取余运算
**:幂运算
复合算术运算:
+=:加等运算
x=8;x+=2-->变量x运算结果为10
-=:减等运算
*=:乘等运算 #有时候乘法符号需要转义;(比如expr运算)
/=:除等运算
%=:余等运算
let命令:
let是shell内建的整数运算命令;
(1) let var=算术表达式
不直接显示运算结果,需要用 echo $VAR 显示结果;
(2) var=$[]
(3) var=$(())
(4) var=$(expr arg1 arg2 arg3 ...)
(5) declare –i var=数值 #声明整数变量;
(6) echo ‘算术表达式‘ | bc
let i=2+2 -->i=4
let j=5-2 -->j=3
let k=2*5 -->k=10
let L=15/7 -->L=2(整数运算)
let m=15%7 -->m=1(取余)
let n=2**3 -->n=8(2的3次方)
let也支持类C的计算方式:
let i++ 自增1
let i-- 自减1
let i+=10 i值等于i增加10
let i-=10 i值等于i减少10
let i*=10 i值等于i乘以10
let i/=10 i值等于i除以10
let i%=10 i值等于i模10
增强型赋值:
自身=自身+数字,变量做算术运算后将结果存回自身;
i=$[$i+1] (自加1后自赋值,每执行一次数值+1)
echo $i
expr命令:
整数运算,要求操作数与符号之间用空格隔开;否则直接打印出字符串;所以特殊的操作符需要转义,比如*;
直接返回计算结果;
#expr 1 + 1
#expr 3 \* 10
bc命令:
是一种语法,为任意精度算术语言提供解释器;
使用bc最简单的方式是直接输入bc命令,回车后进入交互式界面;
#bc
a=8
b=3
a+b
11
a-b
5
a*b
24
a/b
2
scale=3 #设置显示的小数位数;
a/b
2.666
默认情况下bc并不显示小数部分,必须设置要显示的小数位数;通过设置scale指定要显示的小数位数;
bc还支持比较运算,逻辑运算;
比较运算,真为1,假为0;
#bc
2>1
1
2<1
0
2==2
1
逻辑运算,真为1,假为0;逻辑运算中非0结果都是1;
#bc
1&&2
1
1&&0
0
1||0
1
1||2
1
1||3
1
0||2
1
!0
1
!1
0
!2
0
1&&a
1
0||a
1
在脚本中,往往只需要调用bc的处理结果而不会进入交互界面,bc支持批量处理和管道方式处理表达式计算;
希望一次性处理多个计算,只需要创建一个文件,并按行写好需要计算的表达式就可以了;
#cat cal.bc
12*34
34/12
scale=3;34/12
a=1;b=2;a+b
#cat cal.bc | bc
408
2
2.833
3
bash有内建的随机数生成器:
$RANDOM(1-32767)
echo $[$RANDOM%50] #1-49之间随机数
原文地址:http://keithtt.blog.51cto.com/3080111/1813931