**:
本文將介紹6種shell指令碼中算術運算的方法,各有優缺點,當然了,最常用的就那兩種,我會特別指出。
6種算術運算方法是:
let operation
expr operation
$[ operation ]
$(( operation ))
用awk 做算術運算
echo "operation" | bc
let no1
++let no1
--let
no+=
6let no=
no-6
let 使用方法比較簡單,尤其是用來做自增自減運算,看起來更直觀,引用變數的時候也不用在變數名前加"$"符號。
result
=`expr 3 + 4`
result=$
(expr $no +5
)
我最不喜歡這種方式了,怎麼看怎麼彆扭,每次都要寫expr 這 幾個字元,而且都要用反引號引起來,怎麼會有這種方式呢?這一定是歷史遺留問題!
這是比較常見的一種方式了,而且用起來也比較方便,在引用變數的時候,可以在變數名前面加"$"符號,也可以不加。
result=$
[no1
+no2
]result=$
[$no1 +5
]
個人覺得這是比較正常也比較方便的方式,不過,它也不是沒有缺點,dash 就不支援它,好在現在大部分linux 發行版都有bash,所以,在寫指令碼的時候,最好在前面加上'#!/bin/bash' ,你也可能加的是'#!/bin/sh' ,這種方式也可能呼叫的是dash,因為有可能/bin/sh 只是/bin/dash 的乙個符號鏈結(見參考書1)。
這也是一種很常見的方式,除了比上一種方式要多敲兩次鍵盤,其他用法都一樣,就我個人而言,還是更喜歡上面那種方法,怎麼看怎麼正常,因為shell 裡面if 語句的判斷式是 [ command or expression ] ,用上面那種方式進行算術運算,可能看起來更一致。
上面就是4種shell 指令碼進行算術運算的方法,它們都不支援浮點數。所以,聰明的我們可以用其他方法來進行算數運算,這其中,awk 就是乙個很好的方法。
awk類似於c語言,而且提供了多種函式,需要浮點數運算或更高階數學函式的時候,用awk 才是聰明之舉。
echo -e
"$i\t$j"
|awk
''
awk 已經可以幫助我們完成很多運算了,不過你可能更喜歡用bc 來計算,畢竟,人家bc 才是專業的,而且看起來比awk 更直觀,最重要的,有些事情用awk 無法解決,比如,你要計算兩個10進製的數,然後以2進製的方式輸出結果。
echo
"obase=2;$i+$j"
|bc
bc 還有乙個非常非常好的好處,如下所示:
variable
=`bc << eof
options
statements
expressions
eof`
具體例項:
#!/bin/bash
var1
=10.46
var2
=43.67
var3
=33.2
var4=71
var5
=`bc << eof
scale=4
a1=($var1 * $var2)
b1=($var3 * $var4)
a1+b1
eof`
echo
thefinal
answer
forthis
mess
is$var5
應該,或許,可能還有其他方法,不過,這些都是linux系統自帶的工具和方法,所以,相容各種平台,而且,這幾種運算已經能夠滿足我的需求了,方法再多,反而會變成累贅。 Shell中的算術運算
當使用let時,變數名之前不能再新增 用法 var1 2 var2 3 let result var1 var2 echo result 除此之外,我們還可以使用 let 來進行自加自減操作 let var 使用let進行自加 let var 使用let進行自減 簡寫let no 6 let no ...
Shell中的算術運算 譯
儘管shell中的變數被預設地看做是string型別,而非number,但是shell本身仍然支援算術運算。主要有以下5種方式。n 6 3 echo n 6 3 declare i n 將n宣告為乙個整數 integer n 6 3 echo n 2 z 5 z expr z 1 加號 兩邊要有空格...
shell 指令碼程式設計之算術運算子
shell 的算術運算子只支援整數,浮點數的運算結果會被轉換成整數。算術運算子包括 冪運算 位左移 位右移 按位與 按位或 按位異或 按位非 使用 let expression 的方式將運算的結果儲存到變數中,如果直接寫var var1 var2這種賦值方式,則得到的結果是字串。ljx localh...