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


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

原文:http://blog.csdn.net/fu_wayne/article/details/21620639

在Linux下總會遇到數值計算問題,由於Linux下變量都屬於弱變量,沒有變量類型的概念(貌似腳本語言都是這樣)。

例如定義一個變量:x=1

此時的變量x默認是一個字符串,即使看着像一個數字,所以當嘗試用如下的方法去進行計算的時候,得到的結果卻不是想要的

echo $x+=1         ------------> 輸出:2+=1,並不是想要的結果2

Linux下有多種方法進行計算,一下摘錄幾例:

1.使用$[]

  個人最常用的就是$[]方法進行計算,簡單方便,適合不太復雜的計算。

  

[plain]  view plain  copy
 
  1. x=1  
  2. echo $[$x+=1]  

輸出:2

 

2.使用expr

expr命令為Linux中的命令,一般用於整數值計算,但也可用於字符串操作。
使用格式:
expr var1 operator var2
 
例如:
[plain]  view plain  copy
 
  1. x=1  
  2. expr $x + 4   
輸出:5
 
注意:表達式之間的空格,注意只能進行整數運算,如果操作數不為整數,命令將會報錯。
此命令所有計算的結果會以整數形式返回,例如上述的表達式變為:expr $x / 4 ,其結果為1,結果已經自動進行了取整操作。
 

 
3.使用(())
 
使用方法:((表達式1,表達式2,表達式3))
 
相比上面的兩種方法,(())這種方法略顯強大,它的強大之處在於:
1) 支持a++,a--操作(是不是找到C語言的感覺)
2) 支持多個表達式運算,各個表達式之間用“,”分開
3) 雙括號可以進行邏輯運算,四則運算
4) 雙括號結構 擴展了for,while,if條件測試運算
5) 在雙括號結構中,所有變量可以不加入:“$”符號前綴
 
[plain]  view plain  copy
 
  1. x=1  
  2. ((y = x + 1,z = y + 1))  
  3. echo $z  
輸出:3
 
如果雙括號帶:$,將獲得表達式值,賦值給左邊變量
[plain]  view plain  copy
 
  1. a=10  
  2. b=10  
  3. total=$((a*b))  
[plain]  view plain  copy
 
  1. echo $total  
輸出:100
 
擴展流程控制語句(邏輯關系式)(摘自網絡)
[plain]  view plain  copy
 
  1. #!/bin/sh   
  2. num=100;   
  3. total=0;   
  4. for((i=0;i<=num;i++));   
  5. do   
  6. ((total+=i));   
  7. done   
  8. echo $total;   
  9. total=0;   
  10. i=0;   
  11. while((i<=num));   
  12. do   
  13. ((total+=i,i++));   
  14. done   
  15. echo $total;   
  16. if((total>=5050));then   
  17. echo "ok";   
  18. fi   

4.使用 let 命令
[plain]  view plain  copy
 
  1. var=1  
  2. let "var+=1" 或 let var+=1 這種寫法運算符間不能有空格   
  3. echo $var  
  4.   
  5. output:  
  6. 2  


使用方法:
let 表達式
注意:let必須是完整的算術表達式,即有等號兩邊


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM