shell中的if語法

2021-06-06 13:26:24 字數 1426 閱讀 8967

字串測試

= 兩個字串相等

!= 兩個字串不相等

-z  空串

-n  非空串

示例:[ -z $shell ]

數值測試

-eq 數值相等(equal to)

-ne 數值不相等

-gt 第乙個數大於第二個數

-lt 第乙個數小於第二個數

-le 第乙個數小於等於第二個數

-ge 第乙個數大於等於第二個數

示例:[ "10" -eq "12" ]

與其他語言不同,shell script中if語句的條件部分要以分號來分隔。第三行中的表示條件測試,常用的條件測試有下面幾種:

[ -f "$file" ] 判斷$file是否是乙個檔案

[ $a -lt 3 ] 判斷$a的值是否小於3,同樣-gt和-le分別表示大於或小於等於

[ -x "$file" ] 判斷$file是否存在且有可執行許可權,同樣-r測試檔案可讀性

[ -n "$a" ] 判斷變數$a是否有值,測試空串用-z

[ "$a" = "$b" ] 判斷$a和$b的取值是否相等

[ cond1 -a cond2 ] 判斷cond1和cond2是否同時成立,-o表示cond1和cond2有一成立

要注意條件測試部分中的空格。在方括號的兩側都有空格,在-f、-lt、=等符號兩側同樣也有空格。如果沒有這些空格,shell解釋指令碼的時候就會出錯。

$#表示包括$0在內的命令列引數的個數。在shell中,指令碼名稱本身是$0,剩下的依次是$0、$1、$2…、$、$,等等。$*表示整個引數列表,不包括$0,也就是說不包括檔名的引數列表。

linux if語句內判斷引數

–b 當file存在並且是塊檔案時返回真 

-c 當file存在並且是字元檔案時返回真 

-d 當pathname存在並且是乙個目錄時返回真

-e 當pathname指定的檔案或目錄存在時返回真 

-f 當file存在並且是正規檔案時返回真 

-g 當由pathname指定的檔案或目錄存在並且設定了sgid位時返回為真 

-h 當file存在並且是符號鏈結檔案時返回真,該選項在一些老系統上無效 

-k 當由pathname指定的檔案或目錄存在並且設定了「粘滯」位時返回真 

-p 當file存在並且是命令管道時返回為真 

-r 當由pathname指定的檔案或目錄存在並且可讀時返回為真 

-s 當file存在檔案大小大於0時返回真 

-u 當由pathname指定的檔案或目錄存在並且設定了suid位時返回真 

-w 當由pathname指定的檔案或目錄存在並且可執行時返回真。乙個目錄為了它的內容被訪問必然是可執行的。 

-o 當由pathname指定的檔案或目錄存在並且被子當前程序的有效使用者id所指定的使用者擁有時返回真

makefile中的shell語法

在makefile中寫shell 有點詭異,和不同的shell語法不太一樣,如果不了解,看makefile會莫名其妙。下面總結了一些。1 盡在makefile檔案的目標項冒號後的另起一行的 才是shell eg xx xx1 這裡時makefile yy xx xx2 這是是makefile mak...

Shell基礎語法(中)

if語句 基礎格式 格式1 if 條件 then 語句 fi 格式2 if 條件 then 語句 else 語句 fi 格式3 if then elif then else fi 可以使用 結合多個條件 if a gt 5 a lt 10 then if b gt 5 b lt 3 then 算術比...

Shell基礎語法(中)

if語句 基礎格式 格式1 if 條件 then 語句 fi 格式2 if 條件 then 語句 else 語句 fi 格式3 if then elif then else fi 可以使用 結合多個條件 if a gt 5 a lt 10 then if b gt 5 b lt 3 then 算術比...