Linux Shell數值比較和字串比較及相關

2021-09-07 15:28:37 字數 1275 閱讀 6147

說明:

1. 把字串當成整型進行比較,由於abcd等字元對不上0123當程式嘗試去轉成二進位制時無法完成轉換,所以用於數值比較的運算不能用於字串比較;但是把整型當成字串進行比較,0123這些數值完全可以轉成ascii碼而且原本兩個整型相等則變成ascii碼還是相等、不等的還是不等,所以可用於字串的比較也可用於整型的比較。

2. if語句中,數值比較的寫法是if [ $var1 -ge $var2 ];字串比較的寫法是if [ 「$var1」 != 「$var2」 ],其中加雙引號只是相容$var2處為空的情況

3. 在各種運算中,test命令的運算和中括號是等效的

4. 賦值時等號兩邊沒空格,比較或測試時運算子兩邊都要有空格

5. shell預設是字元運算,如果想當數值進行運算要在前邊加上expr,如:var3=`expr $var1 + $var2`

6. shell的檔案包含命令只有「.」,而且該命令只能一次包含單個檔案(當然可以用*表示資料夾下所有檔案)而不能包含乙個資料夾;所見的!includedir和#includedir並不存在這樣的命令,應該是程式自己實現的包含功能

7. 「.」在shell中執行則會影響shell的環境,但如果只在指令碼中執行那只影響指令碼中的環境不會影響當前shell的環境;source其實也如此。

該型別操作會把兩邊變數當成整型進行加減運算,字串abcd按整型運算無法進行,所以此型別不能用於字串比較

引數說明

-eq等於則為真

-ne不等於則為真

-gt大於則為真

-ge大於等於則為真

-lt小於則為真

-le小於等於則為真

引數說明

==相等則為真

!=不相等則為真

引數說明

-z 字串

字串的長度為零則為真

-n 字串

字串的長度不為零則為真

引數說明

-e 檔名

如果檔案存在則為真

-r 檔名

如果檔案存在且可讀則為真

-w 檔名

如果檔案存在且可寫則為真

-x 檔名

如果檔案存在且可執行則為真

-s 檔名

如果檔案存在且至少有乙個字元則為真

-d 檔名

如果檔案存在且為目錄則為真

-f 檔名

如果檔案存在且為普通檔案則為真

-c 檔名

如果檔案存在且為字元型特殊檔案則為真

-b 檔名

如果檔案存在且為塊特殊檔案則為真

參考:

linux shell數值運算

1 bc命令 1直接進入其命令列執行 bc q 回車 2寫個檔案一起執行 bc q bc test.bc 純文字 3直接在shell中管道符交由bc執行數 算 echo 2 3 bc 4可處理進製轉換,設定精度 2 expr命令 可以是數字或者字串 3let 命令 4 expr 5 a 這種自加操作...

shell數值和字元比較

二元比較操作符,比較變數或者比較數字.注意數字與字串的區別.整數比較 eq 等於,如 if a eq b ne 不等於,如 if a ne b gt 大於,如 if a gt b ge 大於等於,如 if a ge b lt 小於,如 if a lt b le 小於等於,如 if a le b 小於...

linux shell 比較總結

整數比較符號 eq等於,如if 1 eq 2 ne不等於,如if 1 nq 2 gt大於,如if 1 gt 2 ge大於等於,如if 1 ge 2 lt小於,如if 1 lt 2 le小於等於,如if 1 le 2 小於,如 1 2 小於等於,如 1 2 大於,如 1 2 大於等於,如 1 2 字串...