如何在Linux下使用bash?
老胡的看法:
Linux的bash shell下面有很多支持整數和浮點運算的工具,比如常見的echo(只支持整數)、printf、awk、bc、dc、以及一些Linux下我們常用的編程語言框架如node、perl、python等都可以用來做一些簡單的數學運算。這里我重點介紹幾個:
使用printf進行數學計算利用printf的格式化輸出特性,可以計算echo無法輸出的浮點數。printf可以支持四則運算、乘方、科學計數法等計算。不過無法支持三角函數和對數計算。對于一般的情形來說其實已經夠用:
%f表示以浮點數格式輸出,.后面的數字表示保留的小數位數。打印的字符串里**表示乘方,e表示科學計數法。
使用bc進行數學計算bc是BestCalculator的首字母縮寫,它是一個支持交互式計算的命令行計算器,同時也支持內聯模式的調用。通過scale可以設置輸出的小數精度,通過obase設置輸出的進制,ibase設置輸入的進制,以此來實現更加強大的功能:
使用awk進行數學計算不得不說awk簡直就是字符串處理的神器,除了一般的字符串處理之外,awk也提供了強大的計算功能。awk的計算函數中還支持了sin、cos等三角函數、sqrt開方和對數函數等運算函數。通常為了使用方便,我們在bash中可以先定義一個計算器函數過程:
cal(){ awk "BEGIN { print $*}"; }之后再使用cal+算術式就可以進行運算了:
使用dc進行數學計算dc是一個使用逆波蘭表示法輸入算術式的計算器,同時支持命令行計算和交互式計算,和bc差不多,但是它使用的逆波蘭表示法很有意思,也需要一些時間來適應。逆波蘭表示法的核心是使用棧式運算,操作數入棧,遇到運算符時最上面的兩個操作數進行計算,結果入棧。
比如:
5 + ((1 + 2) * 4) - 3寫成逆波蘭表達式就是:
5 1 2 + 4 * + 3 -在bash shell中使用其它腳本語言計算比如node、python、perl、php甚至sqlite都可以利用起來用作整數和浮點運算,以node為例,直接使用js里面的數學表達式就可以:
總結一下,老胡介紹的這幾樣工具是不是很好玩?想知道更加詳細的玩法,多使用man命令查看文檔。在老胡介紹這幾樣神器之前是不是以為bash shell只能進行有限的整數運算?老胡非常強烈的建議好好學一下awk這個神器,我感覺它已經快上天入地無所不能了。另外除了bash shell之外,還可以多了解一下zsh shell,它原生的echo就可以進行浮點運算,其它的功能也非常強大,最新版的macOS選用了它作為默認的shell程序。
如果我的回答對你有點價值,請莫忘點贊加關注,謝謝!歡迎在評論區發表各種意見。
本文為作者原創,嚴禁轉載,違者必究。