您是否為 Bash shell 中大量的測(cè)試和比較選項(xiàng)而困惑呢?這個(gè)技巧可以幫助您解密不同類型的文件、算術(shù)和字符串測(cè)試,這樣您就能夠知道什么時(shí)候使用 test、 [ ]、 [[ ]]、
(( )) 或 if-then-else 了。
Bash shell 在當(dāng)今的許多 Linux? 和 UNIX? 系統(tǒng)上都可使用,是 Linux 上常見(jiàn)的默認(rèn) shell。Bash 包含強(qiáng)大的編程功能,其中包括豐富的可測(cè)試文件類型和屬性的函數(shù),以及
在多數(shù)編程語(yǔ)言中可以使用的算術(shù)和字符串比較函數(shù)。理解不同的測(cè)試并認(rèn)識(shí)到 shell 還能把一些操作符解釋成 shell 元字符,是成為高級(jí) shell 用戶的重要一步。這篇文章摘
自 developerWorks 教程 LPI exam 102 prep: Shells, scripting, programming, and compiling,介紹了如何理解和使用 Bash shell 的測(cè)試和比較操作。
這個(gè)技巧解釋了 shell 測(cè)試和比較函數(shù),演示了如何向 shell 添加編程功能。您可能已經(jīng)看到過(guò)使用 && 和 || 操作符的簡(jiǎn)單 shell 邏輯,它允許您根據(jù)前一條命令的退出狀態(tài)
(正確退出或伴隨錯(cuò)誤退出)而執(zhí)行后一條命令。在這個(gè)技巧中,將看到如何把這些基本的技術(shù)擴(kuò)展成更復(fù)雜的 shell 編程。
測(cè)試
在任何一種編程語(yǔ)言中,學(xué)習(xí)了如何給變量分配值和傳遞參數(shù)之后,都需要測(cè)試這些值和參數(shù)。在 shell 中,測(cè)試會(huì)設(shè)置返回的狀態(tài),這與其他命令執(zhí)行的功能相同。實(shí)際上,
test 是個(gè)內(nèi)置命令!
test 和 [
內(nèi)置命令 test 根據(jù)表達(dá)式expr 求值的結(jié)果返回 0(真)或 1(假)。也可以使用方括號(hào):test expr 和 [ expr ] 是等價(jià)的。 可以用 $? 檢查返回值;可以使用 && 和 || 操
作返回值;也可以用本技巧后面介紹的各種條件結(jié)構(gòu)測(cè)試返回值。
清單 1. 一些簡(jiǎn)單測(cè)試
[ian@pinguino ~]$ test 3 -gt 4 && echo True || echo false
false
[ian@pinguino ~]$ [ "abc" != "def" ];echo $?
0
[ian@pinguino ~]$ test -d "$HOME" ;echo $?