linux shell --- 條件判斷命令 1. test命令的測試功能 test命令用於檢測系統檔案及其相關屬性,如檢查某檔案是否存在,檢查某檔案的許可權等。判斷目前的目錄下是否存在某檔案jifeng可以用以下命令: [c-sharp] test -e jifeng 但執行結果並不會現實任何訊息,但最後可以通過$? 或 && 或 || 來展現整個過程。例如,上面的子類改寫成 [c-sharp] test -e jifeng && echo "exit" || echo "not exit" 這樣,最終結果可以告訴我們是“exit”,還是“not exit”。 2. 其他的測試標誌 以下是test命令常用的測試標誌: (1) 某檔案名稱的類型檢測(存在與否及檔案類型) -e :該“檔案名稱”是否存在。(常用)-d :該檔案名稱是否為目錄。(常用)-f :該檔案名稱是否為普通檔案。(常用)b,c,S,p,L分別指的是塊裝置、字元裝置、通訊端檔案、管道檔案及連結檔案。 (2) 檔案許可權的檢測(test -r filename) -r :該檔案是否具有可讀屬性-w :該檔案是否具有可寫屬性-x :該檔案是否具有可執行屬性-s :該檔案是否為非空白檔案,-s表示的是檔案存在,且非空 (3) 比較兩個檔案(test file_a nt file_b) -nt :檔案file_a是否比file_b新-ot :檔案file_a是否比file_b舊-ef :判斷兩個檔案是否為同一檔案,可用於判斷硬串連。(主要判斷兩個檔案是否均指向同一個inode) (4) 兩個整數之間的判斷(test n1 -eq n2) -eq :兩個數相等(equal)-ne :兩個數不相等(not equal)-gt :前者大於後者(greater than)-lt :前者小於後者(less than)-ge :前者大於等後者-le :前者小於等於後者 (5) 判斷字串 test -z str : 判斷字串是否為空白,若為空白則回傳true (常用)test -n str :判斷字串是否為非空,左路為非空則回傳true(-n亦可省略)test str_a = str_b及test str_a != str_b:判斷兩字條串是否相等及不相等。 (6) 多重判斷條件(test -r file -a -w file) -a :and,當兩個條件都滿足時才回傳true,即file具有讀和寫入權限-o : or,當兩個條件滿足其一時即回傳true-! :條件求反,test -! -x file,即當file不具有執行許可權時才回傳true 3. 使用判斷符號[ ] 可以使用判斷符號進行資料的判斷,如檢查某變數是否為空白 [ -z $SHELL ],需要注意的是中括弧(“[]”)內的組件必須以空格隔開。有以下指令碼: [c-sharp] #!/bin/bash read -p "input you choice:" choice [ "$choice" == "y" ] || [ "$choice" == "Y" ] && echo "OK,continue" && exit 0 [ "$choice" == "n" ] || [ "$choice" == "N" ] && echo "Oh,interrupt!" && exit 0 echo "I don't know what is your choice" && exit 0 4. 取反的應用 [c-sharp] [[ ! -s "errortrade/errortrade.txt" ]] && [[ ! -s "errortrade/errorkeyvalue.txt" ]]