1. 程式人生 > >Linux - 數值運算

Linux - 數值運算

逗號 分隔 當我 運算符 使用 結構 方式 運算 expr

Shell - 數值運算

因為shell腳本是屬於弱語言,沒有變量類型的概念,所以定義變量會默認為字符串。就算看上去是一個數字,當直接進行計算時,就會出錯:

x=1
echo $x+=1
# 輸出1+=1,並不是自己想要的2

所以當我們需要進行數值運算時,我們需要一些特殊的方法,在Linex中提供了好幾種方法。

1. 使用 $[]

x=1
echo $[$x+=1]

2. 使用 expr

expr為Linux中的一個命令,可以用於數值計算,也可以用於字符串操作:

x=1
expr 14 % 9
expr 10 + 10
expr $x + 1
# 使用乘號比較特殊,必須用反斜杠
expx $x \* 3

使用expr也存在缺陷:進行計算的值只能為整數,得到的結果也會以整數形式返回。

3. 使用 (())

相比於$[]expr,這種方式功能比較強大:

  • 支持++,--操作
  • 支持多個表達式運算,用逗號分隔
  • 雙括號可以進行邏輯運算,四則運算
  • 雙括號結構拓展了for,while,if條件測試運算
  • 在雙括號結構中,所有變量可以不加入$符號前綴
x=1
(( y = x + 1,z = y + 1 ))
echo $z
a=10
b=10
total=$((a*b))

4. 使用 let

var=1
# 這種寫法運算符間不能有空格 
let "var+=1" 
let var+=1 
echo $var

Linux - 數值運算