因為shell指令碼是屬於弱語言,沒有變數型別的概念,所以定義變數會預設為字串。就算看上去是乙個數字,當直接進行計算時,就會出錯:
x=1
echo $x+=1
# 輸出1+=1,並不是自己想要的2
所以當我們需要進行數值運算時,我們需要一些特殊的方法,在linex中提供了好幾種方法。
x=1
echo $[$x+=1]
expr為linux中的乙個命令,可以用於數值計算,也可以用於字串操作:
x=1
expr 14 % 9
expr 10 + 10
expr $x + 1
# 使用乘號比較特殊,必須用反斜槓
expx $x \* 3
使用expr
也存在缺陷:進行計算的值只能為整數,得到的結果也會以整數形式返回。
相比於$
和expr
,這種方式功能比較強大:
x=1
(( y = x + 1,z = y + 1 ))
echo $z
a=10
b=10
total=$((a*b))
var=1
# 這種寫法運算子間不能有空格
let "var+=1"
let var+=1
echo $var
Flex數值運算
專案中用到的,留存一下 需求很簡單就是把分鐘轉換成多少小時多少分,主要用到除法和求餘 這是正確的 沒有問題。但我們若是用number觸發,在fb種可能會遇到一些問題,在http bbs.9ria.com viewthread.php?tid 22270 page 1的例子中 package 先普及一...
shell數值運算
原文 1 錯誤方法舉例 a var 1 1 echo var 輸出的結果是1 1,悲劇,呵呵 b var 1 var var 1 echo var 輸出結果是1 1,依然悲劇,呵呵 2 正確方法 1 使用let var 1 let var 1 echo var 輸出結果為2,這次沒有悲劇 注意 a ...
linux shell數值運算
1 bc命令 1直接進入其命令列執行 bc q 回車 2寫個檔案一起執行 bc q bc test.bc 純文字 3直接在shell中管道符交由bc執行數 算 echo 2 3 bc 4可處理進製轉換,設定精度 2 expr命令 可以是數字或者字串 3let 命令 4 expr 5 a 這種自加操作...