shell環境根據命令執行後的返回狀態值($?)來判斷是否執行成功,當返回值為0時表示成功,否則(非0值)表示失敗或異常。使用專門的測試工具test命令,可對條件進行測試,並根據返回值來判斷條件是否成立(返回值為0表示成立)。
使用test測試命令時
使用格式:
檔案測試:
檔案測試指的是根據給定的路徑名稱,判斷對應的是檔案還是目錄,或者判斷檔案是否可讀,可寫,可執行等。檔案測試的常見操作選項如下,使用時將測試物件放在操作選項之後即可.
使用選項:
[root@localhost ~]
# [ -d /etc/pam.d ]
[root@localhost ~]
# echo $?
0[root@localhost ~]
# [ -d /etc/pam ]
[root@localhost ~]
# echo $?
1
通過檢視變數「$?」變數值可以判斷前一步的條件測試結果。但是操作比較煩瑣,輸出結果並不是很直觀。為了更方便檢視測試結果,可以結合命令分隔符「&&」和echo命令一起使用,當條件成立時直接輸出yes。其中,「&&」符號表示「而且」的關係,只有當前面的命令支援成功後才會執行後面的命令。否則後面的命令將會被忽略。
將上面的改寫一下:(無輸出則表示不存在,輸出yes表示該目錄存在)
[root@localhost ~]
# [ -d /etc/pam.d ] && echo yes
yes
整數值比較是根據給定的兩個整數值,判斷第乙個數與第二個數的關係,如是否大於,等於或者小於第2個數。
數值比較常用操作選項如下:
使用選項:
整數值比較在shell指令碼編寫中的應用較多。例如,用來判斷已登入使用者數量、開啟程序數.磁碟使用率是否超標,以及軟體版本號是否符合要求等,實際使用時,往往會通過變數引用.命令替換等方式來獲取乙個數值。
例如:若要判斷當前已登入的使用者數、當超過五個時輸出"toomany.". 可以執行以下操作,其中,已登入使用者數可通過who|wc -1命令獲得,以命令替換方式嵌入,
# unum=`who | wc -l` //檢視當前已登入使用者數
# [ $unum –gt 10 ] && echo 「too many.」 //期試結果大於
再例如,若要判斷當前可用的空閒記憶體大小,當低於1024mb的時候輸出具體數值,可以執行以下操作,.其中,free –m命令表示以mb為單位輸出記憶體資訊,提取的空閒值數值通過命令替換賦值給變數freecc.
# freecc=$(free -m | grep "cache:" | awk '')
# [ $freecc -lt 1024 ] && echo "$mb"
其通常用來檢查使用者輸入,系統環境等是否滿足條件,在提供互動式操作的shell指令碼中,也可用來判斷使用者輸入的位置引數是否符合要求,字串比較的常用操作選項如下。
使用選項:
可以執行以下操作:
# echo $lang
# [ $lang != "en_us.utf-8" ] && echo "not en.us"
再例如,在shell指令碼應用中,經常需要使用者輸入『yes』或『no』 來確認某個任務。以下操作展示了確認互動的簡單過程,當然,實際使用時還會根據變數ack" 的取值分別執行進一步的操作。
# read -p「是否覆蓋現有檔案(yes/no)?" ack
# [ $ack = "yes" ] && echo 「覆蓋「
# read ~p「是否覆蓋現有檔案(yes/no)?" ack
是否覆蓋現有檔案(yes/no) ?no
# [ $ack= "no" ] && echo "不覆蓋」
邏輯測試指的是判斷兩個或多個條件之間的依賴關係。當系統任務取決於多個不同的條件時,根據這些條件是否同時成立或者只要有其中乙個成立等情況,需要有乙個測試的過程。常用的邏輯測試操作如下,使用時放在不同的測試語句或命令之間.
使用選項:
在上述邏輯測試的操作選項中,&&和"||」通常也用於間隔不同的命令操作,其作用是相似的。實際上此前已經接觸過&&操作的應用,如make && make install 的編譯安裝操作。
例如,若要判斷當前linux系統的核心版本是否大於2.4.可以執行以下操作,其中,核心版本號通過uname和awk命令獲得。
# uname –r
# mnum=$(uname -r | awk -f. '')
# snum=$(uname -r | awk -f. '')
# [ $mnum -eq 2 ] && [ $snum -gt 4 ] && echo "符合要求"
shell條件測試test
shell條件測試可以通過以下兩種方式 test 引數 測試內容 引數 測試內容 一 測試檔案型別 test e 檔名 測試檔案是否存在 e 檔名 測試檔案是否存在,注意中括號兩邊的空格 test f 檔名 判斷是否為普通檔案 test d 檔名 判斷是否為目錄 test b 檔名 判斷是否為塊裝置...
shell 條件測試語句 test
shell環境根據命令執行後的返回狀態值 來判斷是否執行成功,當返回值為0時表示成功,否則 非0值 表示失敗或異常。使用專門的測試工具test命令,可對條件進行測試,並根據返回值來判斷條件是否成立 返回值為0表示成立 使用test測試命令時 這兩種方式作用完全相同,但是通常使用後者。根據要測試的條件...
Shell 條件測試(test)基礎語法
條件測試的語法有兩種 test 條件表示式 或 條件表示式 注意 中括號 與條件表示式之間一定要有空格,不然會報錯 字串運算子 運算子說明string 判斷指定的字元是否為空串 string1 string2 判斷兩個字串string1和string2是否相等 string1 string2 判斷兩...