一、if語句的結構
分為以下三種:單分支、雙分支、多分支
單分支if語句
if condition is true; then
分支fi
雙分支if語句if condition is true; then
分支else
分支fi
多分支if語句if condition is true; then
分支elif condition is true; then
分支2...else
分支nfi
二、測試形式
分為以下兩種:命令執行狀態結果形式、條件表示式形式
1. 命令的執行狀態結果,即命令執行成功與否:
if command &> /dev/null;then
#一定要注意此處的命令不帶括號或單引號
2. 條件表示式
分為以下兩種:命令形式和關鍵字形式
(1)命令形式(其本質同上1,表示式本身也不能應用於測試,下述的test和形式也是命令,類似.表示source命令)
(a) test expression
if test expression; then
(b) [ expression ]
if [ expression ]; then #一定要注意中括號前後有空格
(2) 關鍵字形式
(c) [[ expression ]]
if [[ expression ]]; then
#一般用於字串測試,尤其是模式匹配測試
三、測試方法(測試種類)
分為以下三種:整數測試、字串測試、檔案測試
1、整數測試
-ge, -gt, -le, -lt, -eq, -ne
(其實也可以用》等來表示,只是得加雙小括號)
2、字串測試;
雙目:>, <, ==, != , ~= (用於模式匹配)
單目:-z (真空,非空假),-n(非空真,空假)
3、檔案測試
-e $file: 是否存在,存在則為真;-a $file: 同上,棄用;
-f $file: 檔案是否存在,且為普通檔案;
-d $file: 是否存在,且為目錄;
-h $file: 是否存在,且為符號鏈結檔案;
-l $file: 同上;
-b $file: 是否存在,且為塊裝置檔案;
-s $file: 是否存在,且為套接字檔案;
-c $file: 是否存在,且為字元裝置檔案;
-p $file: 是否存在,且為管道檔案;
-r $file: 當前使用者是否對此檔案擁有讀許可權;
-w $file: 當前使用者是否對此檔案擁有寫許可權;
-x $file: 當前使用者是否對此檔案擁有執行許可權;
-u $file: 檔案是否擁有suid許可權;
-g $file: 檔案是否擁有sgid許可權;
-k $file: 檔案是否擁有sticky許可權;
-o $file: 當前使用者是否為檔案的屬主;
-g $file: 當前使用者是否屬於檔案的屬組;
-n $file: 檔案自從上一次被讀取之後,是否被修改過;
$f1 -nt $f2:檔案f1是否比檔案f2新;
$f1 -ot $f2:檔案f1是否比檔案f2舊;
$f1 -ef $f2:檔案f1和檔案f2是否為同乙個檔案的硬鏈結;
上述所有檔案測試條件都支援!取反。
shell指令碼 條件
test或 命令 test用法 檢查乙個檔案是否存在。if test f fred.c thenfi或 if f fred.c then fi bin sh echo is it morning?please answer yes or no read timeofday if timeofday ...
1 3 Shell指令碼條件測試
布林變數中真為0,假為1。所以可以根據測試機制來判斷語句的返回值。測試機制可以使用下面語法實現 test表示式或 表示式 或 表示式 表示式前後必須有空格。注意 表示式一般用於 中 擴充套件的正規表示式 根據命令的返回值,可以使用邏輯運算讓語句有條件的執行。bin bash 計算第乙個檔案中空行數 ...
shell指令碼條件判斷
unix shell 程式設計中條件判斷是極為重要的,以下是常用的條件判斷 檔案判斷 b file 若檔案存在且是乙個塊特殊檔案,則為真 c file 若檔案存在且是乙個字元特殊檔案,則為真 d file 若檔案存在且是乙個目錄,則為真 e file 若檔案存在,則為真 f file 若檔案存在且是...