Linux基礎------Shell數值計算的幾種方法
阿新 • • 發佈:2018-10-31
在Linux下總會遇到數值計算問題,由於Linux下變數都屬於弱變數,沒有變數型別的概念(貌似指令碼語言都是這樣)。
例如定義一個變數:x=1
此時的變數x預設是一個字串,即使看著像一個數字,所以當嘗試用如下的方法去進行計算的時候,得到的結果卻不是想要的
echo $x+=1 ------------> 輸出:2+=1,並不是想要的結果2
Linux下有多種方法進行計算,一下摘錄幾例:
1.使用$[]
個人最常用的就是$[]方法進行計算,簡單方便,適合不太複雜的計算。
x=1
echo $[$x+=1]
輸出:2
2.使用expr
expr命令為Linux中的命令,一般用於整數值計算,但也可用於字串操作。 使用格式: expr var1 operator var2 例如:x=1
expr $x + 4
輸出:5
注意:表示式之間的空格,注意只能進行整數運算,如果運算元不為整數,命令將會報錯。
此命令所有計算的結果會以整數形式返回,例如上述的表示式變為:expr $x / 4 ,其結果為1,結果已經自動進行了取整操作。
3.使用(())
輸出:3 如果雙括號帶:$,將獲得表示式值,賦值給左邊變數x=1 ((y = x + 1,z = y + 1)) echo $z
a=10
b=10
total=$((a*b))
echo $total
輸出:100
擴充套件流程控制語句(邏輯關係式)(摘自網路)
#!/bin/sh
num=100;
total=0;
for((i=0;i<=num;i++));
do
((total+=i));
done
echo $total;
total=0;
i=0;
while((i<=num));
do
((total+=i,i++));
done
echo $total;
if((total>=5050));then
echo "ok";
fi
4.使用 let 命令
var=1
let "var+=1" 或 let var+=1 這種寫法運算子間不能有空格
echo $var
output:
2
使用方法: let 表示式 注意:let必須是完整的算術表示式,即有等號兩邊