把字串當成整型進行比較,由於abcd等字元對不上0123當程式嘗試去轉成二進位制時無法完成轉換,所以用於數值比較的運算不能用於字串比較;但是把整型當成字串進行比較,0123這些數值完全可以轉成ascii碼而且原本兩個整型相等則變成ascii碼還是相等、不等的還是不等,所以可用於字串的比較也可用於整型的比較。
if語句中,數值比較的寫法是if [ $var1 -ge var
2];字
符串比較
的寫法是
if[「
var2 ];字串比較的寫法是if [ 「
var2];
字串比
較的寫法
是if[
「var1」 != 「var
2」],
其中加雙
引號只是
相容
var2」 ],其中加雙引號只是相容
var2」]
,其中加
雙引號只
是相容var2處為空的情況
在各種運算中,test命令的運算和中括號是等效的
賦值時等號兩邊沒空格,比較或測試時運算子兩邊都要有空格
shell預設是字元運算,如果想當數值進行運算要在前邊加上expr,如:var3=expr $var1 + $var2
shell的檔案包含命令只有「.」,而且該命令只能一次包含單個檔案(當然可以用*表示資料夾下所有檔案)而不能包含乙個資料夾;所見的!includedir和#includedir並不存在這樣的命令,應該是程式自己實現的包含功能
「.」在shell中執行則會影響shell的環境,但如果只在指令碼中執行那只影響指令碼中的環境不會影響當前shell的環境;source其實也如此。
1.只適用於數值的比較
該型別操作會把兩邊變數當成整型進行加減運算,字串abcd按整型運算無法進行,所以此型別不能用於字串比較
引數 說明
-eq 等於則為真
-ne 不等於則為真
-gt 大於則為真
-ge 大於等於則為真
-lt 小於則為真
-le 小於等於則為真
2.適用於字串的比較(也可用於數值比較)
引數 說明
== 相等則為真
!= 不相等則為真
3.字串測試運算
引數 說明
-z 字串 字串的長度為零則為真
-n 字串 字串的長度不為零則為真
4.檔案測試運算
引數 說明
-e 檔名 如果檔案存在則為真
-r 檔名 如果檔案存在且可讀則為真
-w 檔名 如果檔案存在且可寫則為真
-x 檔名 如果檔案存在且可執行則為真
-s 檔名 如果檔案存在且至少有乙個字元則為真
-d 檔名 如果檔案存在且為目錄則為真
-f 檔名 如果檔案存在且為普通檔案則為真
-c 檔名 如果檔案存在且為字元型特殊檔案則為真
-b 檔名 如果檔案存在且為塊特殊檔案則為真
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數值比較和字串比較及相關
說明 1.把字串當成整型進行比較,由於abcd等字元對不上0123當程式嘗試去轉成二進位制時無法完成轉換,所以用於數值比較的運算不能用於字串比較 但是把整型當成字串進行比較,0123這些數值完全可以轉成ascii碼而且原本兩個整型相等則變成ascii碼還是相等 不等的還是不等,所以可用於字串的比較也...
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 小於 需要雙括號 if a b 小於等於 需要雙括號 if a b 大於 需要雙括號 if a...