本文旨在總結shell編程中取算術運算數值的常用6種方法:let、(())、$[]、expr、bc以及awk
知識儲備:
Bash原生是不支持算術運算的,默認會當作字符串來處理,如下例
1 | #!/bin/bash |
對於一些需要算術運算結果的片段,如何取得算術運算結果大致有以下6種方法,分別簡單介紹
用法Let
注意點:
<1>幾乎支持所有運算,如++、--、括號優先級等,求冪次方用**
<2>變量引用可以不帶$號,如變量num1=num1+1
<3>一般情況下算術表達式可以不加引號,若表達式中有bash關鍵字需加上
<4>let後面的表達式只支持整數運算
代碼實現:
1 | #!/bin/bash |
用法(())
注意點:
<1>用法、支持的運算基本同let,效果基本等價
<2>變量引用可以不帶$,建議帶上
代碼實現:
1 | #!/bin/bash |
用法$[]
注意點:
<1>使用比較廣泛,意思是將中括號內的表達式作爲數學運算先計算結果再輸出
<2>$[]中變量引用可不帶$,但是建議帶上
<3>運算支持同let,但是隻支持整數運算
代碼實現:
1 | #!/bin/bash |
用法expr
注意點:
<1>一款表達式計算工具,能夠完成表達式的求值操作,它本身是一個命令,可以直接使用
<2>支持邏輯運算| & ,支持關係運算< <= = != ,支持算術運算+ - * / %
<3>乘法必須使用轉義 \*,否則會連接字符串
<4>表達式和運算符之間要有空格!正確格式 ARG1 - ARG2
<5>默認只能保留整數位,不支持浮點數運算
代碼實現:
1 | #!/bin/bash |
用法bc
注意點:
<1>bc其實也是一個命令,是一個計算器程序,有些Linux未必自帶
<2>bc可以實現幾乎所有運算,但是需要進入bc交互接口,所以在shell中使用管道來處理
<3>支持浮點數運算,但是需要通過sacle指定精度
代碼實現:
1 | #!/bin/bash |
用法awk
注意點:
<1>awk本質是一款文本處理、格式化報表輸出工具,同時也可以作爲一門編程語言
<2>雖然bash原生不支持運算,但是awk支持衆多運算,還能進行浮點運算
代碼實現:
1 | #!/bin/bash |