apache Ubuntu php shell 开源 google centos 云计算 程序员 mysql Windows Python 微软 Firefox java nginx Android 编程 linux wordpress

test命令和空格的使用

  每一種條件語句的基礎都是判斷什麽是真什麽是假。是否了解其工作原理將決定您編寫的是質量一般的腳本還是您將引以為榮的腳本。
Shell 腳本的能力時常被低估,但實際上其能力的發揮受制於腳本撰寫者的能力。您了解得越多,您就越能像變戲法似地撰寫一個文件來使任務自動化和簡化您的管理工作。
在 shell 腳本中進行的每一種操作(除最簡單的命令編組之外)都需要檢查條件。所有的 shell 腳本“邏輯” — 廣義意義下的“邏輯” — 通常都可以分為以下三大類:if,while,until
  
 test 命令最短的定義可能是評估一個表達式;如果條件為真,則返回一個 0 值。如果表達式不為真,則返回一個大於 0 的值 — 也可以將其稱為假值。檢查最後所執行命令的狀態的最簡便方法是使用 $? 值。出於演示的目的,本文中的例子全部使用了這個參數。
 test 命令期望在命令行中找到一個參數,當 shell 沒有為變量賦值時,則將該變量視為空。這意味著在處理腳本時,一旦腳本尋找的參數不存在,則 test 將報告該錯誤。
當試圖保護腳本時,您可以通過將所有參數包含在雙引號中來解決這個問題。然後 shell 將變量展開,如果變量沒有值,那麽將傳遞一個空值給 test。另一種方法是在腳本內增加一個額外檢查過程來判斷是否設置了命令行參數。如果沒有設置命令行參數,那麽腳本會告訴用戶缺少參數,然後退出。我們會通過一些例子來更具體地說明所有這些內容。
test 和 [ 命令
 雖然 Linux 和 UNIX 的每個版本中都包含 test 命令,但該命令有一個更常用的別名 — 左方括號:[。test 及其別名通常都可以在 /usr/bin 或 /bin (取決於操作系統版本和供應商)中找到。
 當您使用左方括號而非 test 時,其後必須始終跟著一個空格、要評估的條件、一個空格和右方括號。右方括號不是任何東西的別名,而是表示所需評估參數的結束。條件兩邊的空格是必需的,這表示要調用 test,以區別於同樣經常使用方括號的字符/模式匹配操作。
 在這兩種情況下,test 都評估一個表達式,然後返回真或假。如果它和 if、while 或 until 命令結合使用,則您可以對程序流進行廣泛的控制。不過,您無需將 test 命令與任何其它結構一起使用;您可以從命令行直接運行它來檢查幾乎任何東西的狀態。
 因為它們彼此互為別名,所以使用 test 或 [ 均需要一個表達式。表達式一般是文本、數字或文件和目錄屬性的比較,並且可以包含變量、常量和運算符。運算符可以是字符串運算符、整數運算符、文件運算符或布爾運算符 — 我們將在以下各部分依次介紹每一種運算符。

延伸阅读

  • 抱歉,暂无相关内容!

评论