天天看點

shell 算數運算符

1、概述

shell中無法直接進行算數運算,直接進行會變成字元串之間的合并
常用算數運算方式
(1) 使用let指令進行算術運算,隻支援整數運算。
(2) 使用expr指令進行算術運算,隻支援整數運算。
(3) 使用bc指令進行算術運算,支援小數運算。
(4) 使用運算文法:$[算術表達式],隻支援整數運算。
(5) 使用運算文法:$((算術表達式)),隻支援整數運算。
(6) 在初始化變量時,将變量定義為”整數”類型,則可直接進行整數運算。      

2、let指令進行整數運算

let指令是shell的内建指令,我們可以借助let指令進行整數運算,這種方法隻支援整數運算,不支援包含小數的運算
例:
let a=1+1;echo $a
b=1;c=2;let d=${b}+${c};echo $d

這種方法需要借助一個變量,将計算後的值指派給這個變量後進行輸出,但是let指令是shell内建指令,這是它的優勢,隻要目前伺服器上
存在shell,即可使用它進行整數運算。      

3、expr指令進行算術運算

expr指令也支援算術運算功能,雖然它的功能不止于此,但是此處我們隻使用它進行算術運算,expr指令與let指令相似,也隻能進行整數運
算,而且,使用expr指令進行算術運算時,需要注意以下兩點
1、數值與運算符号之間需要用空格隔開,否則無法進行算術運算,不加空格會變成字元串合并。
2、使用expr指令進行乘法運算時,需要将”乘号”轉義,否則會報錯。
例:
expr 1+2 ==>1+2
expr 1 + 2 ==>3
expr 2 \* 5 ==>10
a=1;b=2;expr ${a} + ${b}      

4、bc指令進行算術運算

bc指令大家可能已經很熟悉了,它是linux下最常用的”電腦”,我們可以借助bc指令進行算術運算,使用這種方法的優勢就是支援小數運算。
注意:在使用”除法”時,需要指定小數點精度,否則運算結果中不會包含小數,使用scale指定小數點精度
例:
echo "1.111+2.222"|bc ==>3.333
echo "8/3"|bc ==>2
echo "scale=2;8/3"|bc ==>2.66

當使用bc指令時,如果運算結果為不到1的小數,則不會顯示小數點前面的”零”,
echo "0.5+0.2"|bc ==>.7 ##少了最前面的0

除了使用管道,将echo輸出的内容重定向到bc,還可以使用如下方法利用bc,它們是等效的。
a=1;b=2;bc<<< ${a}+${b}  ###
${a}+${b} >>>bc 就會報錯      

5、使用運算文法 $[算術表達式]

變量不能是小數,可以直接進行/除号,不輸出小數部分
echo $[1+2]
a=1;b=2;echo $[${a}+${b}]
a=5;b=2;echo $[${a}/${b}]      

6、使用運算文法 $((算術表達式))

和$[算術表達式]基本上一緻
變量不能是小數,可以直接進行/除号,不輸出小數部分
echo $((5/2))      

7、将變量聲明為整形

這種方法也比較簡單,可以直接将變量聲明為”整數”,然後即可直接進行整數運算,計算過程必須都是整數,結果s有小數也會忽略
示例如下:
declare -i s
s=(1+4)/2
echo $s ==>2      

繼續閱讀