bash中的變數沒有資料型別的定義,所以在處理字串和數值時會帶來麻煩。
例如:使用-eq比較數值,=比較字串等;
常用的let、expr僅支援整數運算,不支援浮點數計算。要實現浮點數計算,可以使用bc或awk。
shell bc支援浮點數,是乙個用於數**算的高階工具。5
3.5*2.3 回車
8.0ctrl+d 退出
當然bc還支援很多運算子,比如/ * - +。還支援變數,條件比較操作符,邏輯操作符,判斷語句和迴圈語句。
a=11.設定小數精度,使用引數scale。while(a++<100)
sum+=a
sum5049
[root@localhost ]# echo "scale=5;3/21" | bc2.進製轉換,使用引數obase,ibase(表示輸出,輸入採用什麼進製).14285
[root@localhost ]# echo "scale=2;3/21" | bc
.14
[root@localhost ]# william=100;echo "obase=2;$william" | bc3.計算平方和平方根1100100
[root@localhost ]# william=100;echo "obase=10;ibase=2;$william" | bc
4[root@localhost ]# william=100;echo "obase=10;ibase=5;$william" | bc
25
[root@localhost ]# echo "sqrt(100)" | bc4.浮點數比較10[root@localhost ]# echo "10^10" | bc
10000000000
ver1="1.01"更好的方法,是借助awk強大的函式功能。ver2="1.02"
if [ `echo "$==$"|bc` -eq 1 ] ; then
echo -e "v1 == v2\n"
fiecho "$ver1 > $ver2"|bc
0
1、計算浮點數
n=`awk -v x=2.53 -v y=3.64 'begin '`2、比較浮點數echo $n
0.70
或n=`awk 'begin '`
echo $n
0.70
或echo '2.53 3.64'|awk ''
0.70
echo 123.45 123.44 | awk ' else }'還可以用支援浮點預算的語言,如perl或python等,放在bash指令碼中執行:123.450000 greater then 123.440000
或ver2="1.02"
ver1="1.01"
echo $ $ |awk 'else }'
if [ `echo $ $ |awk 'else }'` -eq 1 ] ; then
echo -e "v1 == v2 a\n"
fi
perl -e 'if ($ar**[0]>$ar**[1]) else ' 123.45 123.44123.450000 greater then 123.440000
在此感謝原創提供的文獻。
編寫SHELL時需要注意空格
以下這是一段簡單的linux shell 功能是用於查詢當前目錄及其所有目錄中,哪些檔案中包括了 html 這四個字元,並將該檔名給列印出來,咋一看這段 應該是沒有問題的,但是實際上卻存在著兩個問題,先看下面的 吧 1 第乙個問題是賦值語句不能夠在變更與值之間有空格,如上面的這一句 wordnum ...
編寫shell指令碼的方式來處理nginx
使用原始碼包安裝的nginx沒辦法使用 service nginx start 或 etc init.d nginx start 進行操作和控制,所以寫了以下的服務控制指令碼。可以使用的選項有 start 啟動 stop 停止 reload 過載 restart 重啟 status 狀態 test ...
編寫Shell指令碼列印輸出變數 及編寫時注意事項
shell指令碼語言是一種非類解釋型語言,弱語言型別 linux支援的所有shell中,都可以通過賦值符號為變數賦值 shell指令碼變數可以分為兩類,區域性變數和環境變數 區域性變數是在自己編寫的shell指令碼內部使用,環境變數可以在系統上面,在bash系統之上使用 其他的程序或者程式都可以呼叫...