日期: 2015年09月13日


算术运算

Shell默认不支持浮点数,所以计算结果中的浮点数会被圆整为整数,

如:1.03>14.99>4



算术运算的方式:

(1) $[$A+$B]

(2) VARIABLE=$((expression))

(3) let VARIABLE=$A+$B

(4) expr $A + $B

(5) bc



运算符:

++ --  增加或减少,(符号在变量前,先输出运算后的结果,符号在变量后,则先输出变量原来的值)

+ - ! ~  一元的正号与负号、逻辑与位的取反

* / %  乘法、除法、取余

**  次方

+ -  加法、减法

< <= > >=  比较符号

== !==  等于、不等于 (与=不同,=是赋值,==是判断)

<<  >>  向左位移、向右位移

&  位的and

^  位的异或

|  位的或

&&  逻辑的and

||  逻辑的or

?:  条件表达式

=、 +=、 -=、 *=、 /=、 %=、 &=、 ^=、 <<=、 >>=、 |=  d

赋值运算符 a+=1 相当于 a=a+1



示例:

演示各种算术运算的方法



增强型赋值

+=

sum=$[$sum+$i]

let sum+=$i


-=, *=, /=, %=


let count=$[$count+1] --> let count+=1 --> let count++

let count$[$count-1] --> let count-=1 --> let count--



示例:

显示/etc/目录下每个普通文件列表,而后统计一共有多少个文件



脚本执行结果




bc的用法:

bc的独有特点是支持小数运算:

# echo 1.1+1.7 | bc

2.8

 

# echo 5.8-1.6 | bc

4.2

 

# echo 2.5*3.0 | bc

7.5

# echo 2.5/.25 | bc

10

 

bc还支持不同进制数据的转换:

 

十进制7转换为二进制:

# echo "obase=2;7" | bc

111

 

十进制15转换为16进制:

# echo "obase=16;15" | bc

F

 

示例:

通过命令输出1+2+3..+10的表达式,并计算结果,输出内容如:1+2+3+4+5+6+7+8+9+10=xx

 

# echo `seq -s '+' 10`=`seq -s"+" 10 | bc`

1+2+3+4+5+6+7+8+9+10=55

 

# echo "`seq -s '+' 10`="$((`seq-s "+" 10`))

1+2+3+4+5+6+7+8+9+10=55

 

# echo `seq -s '+' 10`=`seq -s " +" 10 | xargs expr`

1+2+3+4+5+6+7+8+9+10=55