歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> SHELL編程

Linux Shell 中常用的條件判斷匯總

-b file            若文件存在且是一個塊特殊文件,則為真
-c file            若文件存在且是一個字符特殊文件,則為真
-d file            若文件存在且是一個目錄,則為真
-e file            若文件存在,則為真
-f file            若文件存在且是一個規則文件,則為真
-g file            若文件存在且設置了SGID位的值,則為真
-h file            若文件存在且為一個符合鏈接,則為真
-k file            若文件存在且設置了"sticky"位的值
-p file            若文件存在且為一已命名管道,則為真
-r file            若文件存在且可讀,則為真
-s file            若文件存在且其大小大於零,則為真
-u file            若文件存在且設置了SUID位,則為真
-w file            若文件存在且可寫,則為真
-x file            若文件存在且可執行,則為真
-o file            若文件存在且被有效用戶ID所擁有,則為真
-z string          若string長度為0,則為真
-n string          若string長度不為0,則為真
string1 = string2  若兩個字符串相等,則為真
string1 != string2 若兩個字符串不相等,則為真
int1 -eq int2      若int1等於int2,則為真
int1 -ne int2      若int1不等於int2,則為真
int1 -lt int2      若int1小於int2,則為真
int1 -le int2      若int1小於等於int2,則為真
int1 -gt int2      若int1大於int2,則為真
int1 -ge int2      若int1大於等於int2,則為真
!expr              若expr為假則復合表達式為真。expr可以是任何有效的測試表達式
expr1 -a expr2     若expr1和expr2都為真則整式為真
expr1 -o expr2     若expr1和expr2有一個為真則整式為真
特殊變量
$0                 正在被執行命令的名字。對於shell腳本而言,這是被激活命令的路徑
$n                 該變量與腳本被激活時所帶的參數相對應。n是正整數,與參數位置相對應($1,$2…)
$#                 提供腳本的參數號
$*                 所有這些參數都被雙引號引住。若一個腳本接收兩個參數,$*等於$1$2
$@                 所有這些參數都分別被雙引號引住。若一個腳本接收到兩個參數,$@等價於$1$2
$?                 前一個命令執行後的退出狀態
$$                 當前shell的進程號。對於shell腳本,這是其正在執行時的進程ID
$!                 前一個後台命令的進程號

一. 條件測試
1. 測試文件狀態
   兩種測試格式:test condition 或 [ condition ],注意後一種方式中condition和[ ]之間的空格。
   常用的測試表達式:
                  -d 判斷目標是否問目錄
                  -f 判斷目標是否為正規文件
                  -L 判斷目標是否為符號鏈接
                  -r 判斷目標是否可讀
                  -s 判斷目標是否為非空,即文件長度大於0
                  -w 判斷目標是否可寫
                  -u 判斷文件是否有suid位置設置
                  -x 判斷目標可否執行


2. 測試時使用邏輯操作符
測試文件狀態是否為O K,但是有時要比較兩個文件狀態。shell提供三種邏輯操作完成此功能。
-a 邏輯與,操作符兩邊均為真,結果為真,否則為假。
-o 邏輯或,操作符兩邊一邊為真,結果為真,否則為假。
! 邏輯否,條件為假,結果為真。


3. 字符串測試
   測試格式:test "string" 或 test string_operator "string 或 test "string" string_operator "string" 或 [ string_operator "string" ] 或 [ "string" string_operator "string" ]
   string_operator:
                  = 兩個字符串相等
                  != 兩個字符串不相等
                  -z 字符串是否為空串
                  -n 字符串是否為非空串


4. 數值測試
   測試格式: "number"number_operator"number" 或 [ "number"number_operator"number" ]
   number_operator:
                  -eq 數值相等。
                  -ne 數值不相等。
                  -gt 第一個數大於第二個數。
                  -lt 第一個數小於第二個數。
                  -le 第一個數小於等於第二個數。
                  -ge 第一個數大於等於第二個數。


5. expr
   expr命令一般用於整數值,但也可用於字符串。一般格式為:
   expr argument operator argument
   expr 也有模式匹配的功能, 通常格式為 expr $VALUE : 'expr_model' 或 expr $VALUE : '\(expr_model\)',前一種返回匹配的字符的個數,後一種返回匹配的字符串。

Copyright © Linux教程網 All Rights Reserved