bash指令碼條件測試總結

2022-03-08 21:26:00 字數 1862 閱讀 1789

一、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 若檔案存在且是...