Shell 條件判斷

2021-08-30 20:21:38 字數 1334 閱讀 5501

傳統if 從句子——以條件表示式作為 if條件

if [ 條件表示式 ]

then

command

command

command

else

command

command

fi條件表示式

檔案表示式

if [ -f file ] 如果檔案存在

if [ -d ... ] 如果目錄存在

if [ -s file ] 如果檔案存在且非空

if [ -r file ] 如果檔案存在且可讀

if [ -w file ] 如果檔案存在且可寫

if [ -x file ] 如果檔案存在且可執行

整數變數表示式

if [ int1 -eq int2 ] 如果int1等於int2

if [ int1 -ne int2 ] 如果不等於

if [ int1 -ge int2 ] 如果》=

if [ int1 -gt int2 ] 如果》

if [ int1 -le int2 ] 如果<=

if [ int1 -lt int2 ] 如果<

字串變數表示式

if [ $a = $b ] 如果string1等於string2

字串允許使用賦值號做等號

if [ $string1 != $string2 ] 如果string1不等於string2

if [ -n $string ] 如果string 非空(非0),返回0(true)

if [ -z $string ] 如果string 為空

if [ $sting ] 如果string 非空,返回0 (和-n類似)

邏輯非 ! 條件表示式的相反

if [ ! 表示式 ]

if [ ! -d $num ] 如果不存在目錄$num

邏輯與 –a 條件表示式的並列

if [ 表示式1 –a 表示式2 ]

邏輯或 -o 條件表示式的或

if [ 表示式1 –o 表示式2 ]

邏輯表示式

表示式與前面的= != -d –f –x -ne -eq -lt等合用

邏輯符號就正常的接其他表示式,沒有任何括號( ),就是並列

if [ -z "$jhhome" -a -d $home/$num ]

注意邏輯與-a與邏輯或-o很容易和其他字串或檔案的運算符號搞混了

最常見的賦值形式,賦值前對=兩邊的變數都進行評測

左邊測變數是否為空,右邊測目錄(值)是否存在(值是否有效)

if test $num -eq 0 等價於 if [ $num –eq 0 ]

Shell條件判斷

b file 若檔案存在且是乙個塊特殊檔案,則為真 c file 若檔案存在且是乙個字元特殊檔案,則為真 d file 若檔案存在且是乙個目錄,則為真 e file 若檔案存在,則為真 f file 若檔案存在且是乙個規則檔案,則為真 g file 若檔案存在且設定了sgid位的值,則為真 h fi...

Shell條件判斷

1 字串判斷 str1 str2 當兩個串有相同內容 長度時為真 str1 str2 當串str1和str2不等時為真 n str1 當串的長度大於0時為真 串非空 z str1 當串的長度為0時為真 空串 str1 當串str1為非空時為真 2 數字的判斷 int1 eq int2 兩數相等為真 ...

Shell 條件判斷

條件判斷的結果為0表示真,為1表示假,正好與c語言的相反。用於比較的條件分為以下四種 條件判斷的格式分為以下兩種 字串比較 說明string 1 string 2 如果string 1和string 2兩個字串相等則返回真,否則返回假 string 1 string 2 如果string 1和str...