test 命令最短的定義多是評估一個表達式;若是條件爲真,則返回一個 0 值。若是表達式不爲真,則返回一個大於 0 的值 — 也能夠將其稱爲假值。檢查最後所執行命令的狀態的最簡便方法是使用 $? 值。出於演示的目的,本文中的例子所有使用了這個參數。shell
test 命令指望在命令行中找到一個參數,當 shell 沒有爲變量賦值時,則將該變量視爲空。這意味着在處理腳本時,一旦腳本尋找的參數不存在,則 test 將報告該錯誤。express
當試圖保護腳本時,您能夠經過將全部參數包含在雙引號中來解決這個問題。而後 shell 將變量展開,若是變量沒有值,那麼將傳遞一個空值給 test。另外一種方法是在腳本內增長一個額外檢查過程來判斷是否設置了命令行參數。若是沒有設置命令行參數,那麼腳本會告訴用戶缺乏參數,而後退出。咱們會經過一些例子來更具體地說明全部這些內容。bash
test 和 [ 命令spa
雖然 Linux 和 UNIX 的每一個版本中都包含 test 命令,但該命令有一個更經常使用的別名 — 左方括號:[。test 及其別名一般均可以在 /usr/bin 或 /bin (取決於操做系統版本和供應商)中找到。操作系統
當您使用左方括號而非 test 時,其後必須始終跟着一個空格、要評估的條件、一個空格和右方括號。右方括號不是任何東西的別名,而是表示所需評估參數的結束。條件兩邊的空格是必需的,這表示要調用 test,以區別於一樣常常使用方括號的字符/模式匹配操做。命令行
test 和 [ 的語法以下:字符串
test expression自動化
[ expression ]io
在這兩種狀況下,test 都評估一個表達式,而後返回真或假。若是它和 if、while 或 until 命令結合使用,則您能夠對程序流進行普遍的控制。不過,您無需將 test 命令與任何其它結構一塊兒使用;您能夠從命令行直接運行它來檢查幾乎任何東西的狀態。class
由於它們彼此互爲別名,因此使用 test 或 [ 均須要一個表達式。表達式通常是文本、數字或文件和目錄屬性的比較,而且能夠包含變量、常量和運算符。運算符能夠是字符串運算符、整數運算符、文件運算符或布爾運算符 — 咱們將在如下各部分依次介紹每一種運算符。
test命令用法。功能:檢查文件和比較值
1)判斷表達式
if test (表達式爲真)
if test !表達式爲假
test 表達式1 –a 表達式2 兩個表達式都爲真
test 表達式1 –o 表達式2 兩個表達式有一個爲真
2)判斷字符串
test –n 字符串 字符串的長度非零
test –z 字符串 字符串的長度爲零
test 字符串1=字符串2 字符串相等
test 字符串1!=字符串2 字符串不等
3)判斷整數
test 整數1 –eq 整數2 整數相等
test 整數1 –ge 整數2 整數1大於等於整數2
test 整數1 –gt 整數2 整數1大於整數2
test 整數1 –le 整數2 整數1小於等於整數2
test 整數1 –lt 整數2 整數1小於整數2
test 整數1 –ne 整數2 整數1不等於整數2
4)判斷文件
test File1 –ef File2 兩個文件具備一樣的設備號和i結點號
test File1 –nt File2 文件1比文件2 新
test File1 –ot File2 文件1比文件2 舊
test –b File 文件存在而且是塊設備文件
test –c File 文件存在而且是字符設備文件
test –d File 文件存在而且是目錄
test –e File 文件存在
test –f File 文件存在而且是正規文件
test –g File 文件存在而且是設置了組ID
test –G File 文件存在而且屬於有效組ID
test –h File 文件存在而且是一個符號連接(同-L)
test –k File 文件存在而且設置了sticky位
test –b File 文件存在而且是塊設備文件
test –L File 文件存在而且是一個符號連接(同-h)
test –o File 文件存在而且屬於有效用戶ID
test –p File 文件存在而且是一個命名管道
test –r File 文件存在而且可讀
test –s File 文件存在而且是一個套接字
test –t FD 文件描述符是在一個終端打開的
test –u File 文件存在而且設置了它的set-user-id位
test –w File 文件存在而且可寫
test –x File 文件存在而且可執行
每一種條件語句的基礎都是判斷什麼是真什麼是假。是否瞭解其工做原理將決定您編寫的是質量通常的腳本仍是您將引覺得榮的腳本。
Shell 腳本的能力時常被低估,但實際上其能力的發揮受制於腳本撰寫者的能力。您瞭解得越多,您就越能像變戲法似地撰寫一個文件來使任務自動化和簡化您的管理工做。
例1.比較兩個數大小
#/bin/bashecho 「please enter two number」read aread bif test $a -eq $bthen echo 「NO.1 = NO.2″elif test $a -gt $bthen echo 「NO.1 > NO.2″else echo 「NO.1 < NO.2″fi例2.查找/root/目錄下是否存在該文件#/bin/bashecho 「enter a file name:」read aif test -e /root/$athen echo 「the file is exist!」else echo 「the file is not exist!」fi