1. 程式人生 > >Linux基礎------Shell數值計算的幾種方法

Linux基礎------Shell數值計算的幾種方法

在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.使用(())
  使用方法:((表示式1,表示式2,表示式3))   相比上面的兩種方法,(())這種方法略顯強大,它的強大之處在於: 1) 支援a++,a--操作(是不是找到C語言的感覺) 2) 支援多個表示式運算,各個表示式之間用“,”分開 3) 雙括號可以進行邏輯運算,四則運算 4) 雙括號結構 擴充套件了for,while,if條件測試運算 5) 在雙括號結構中,所有變數可以不加入:“$”符號字首  
x=1
((y = x + 1,z = y + 1))
echo $z
輸出:3   如果雙括號帶:$,將獲得表示式值,賦值給左邊變數
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必須是完整的算術表示式,即有等號兩邊