在bash指令碼裡面作浮點數比較

2021-04-20 07:41:52 字數 572 閱讀 9197

在bash指令碼裡面作浮點數比較

冷勝魁(seaquester)

[email protected]

2008-9-16

bash本身並不支援浮點數,它將浮點數當成乙個字串來處理。由於某種原因,需要在指令碼裡面比較兩個浮點數,遇到了一些麻煩:

#!/bin/sh

a=14.23

b=9.12

if [[ $a < $b ]] ; then

echo "a < b"

else

echo "a > b"fi

上面的指令碼正常情況下應該顯示 a>b,但是實際上卻顯示a浮點數的比較(運算)應該使用 bc 才可以得到正確的結果,如下:

#!/bin/sh

a=14.23

b=9.12

c=$(echo "$a>$b"|bc)        #當 a>b時,c=1

if [[ $c -eq 0 ]] ; then

echo "a < b"

else

echo "a > b"fi

bc的用法很多,詳細的說明參考man bc。

shell指令碼裡的變數

1 在命令列中和指令碼中,變數定義得格式 name value 左右兩邊不能有空格,否則會當做命令來對待,輸出乙個command not found echo name echo 列印出變數,引用變數使用 name.2 單引號和雙引號 語法 和php中相同 雙引號仍然可以保有變數的內容,但單引號內僅...

指令碼裡學數學 函式

二 函式返回值 三 函式傳參 四 函式變數作用範圍 五 函式庫 六 遞迴 將命令序列按格式寫在一起 可方便重複使用命令序列 function 函式名函式名 return表示退出函式並返回乙個退出值,指令碼中可以用 變數顯示該值 使用原則 1 函式一結束就取返回值,因為 變數只返回執行的最後一條命令的...

shell指令碼裡的引號簡介

一 雙引號 使用雙引號可引用除字元 外的任意字元或字串 例 string hello world echo string print hello world echo string print hello world echo string print hello world echo 2 3 pr...