資源描述:
《shell腳本(iftest語(yǔ)句)》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在應(yīng)用文檔-天天文庫(kù)。
1、————————————————————————————————test命令語(yǔ)法:testexpression或者[expression]test命令對(duì)表達(dá)式進(jìn)行評(píng)估,并且設(shè)置返回值。表達(dá)式的值 返回值true 0false 非零(通常為1)test命令能夠評(píng)估的對(duì)象有:整數(shù)字符串文件test命令被用來(lái)評(píng)估表達(dá)式并且產(chǎn)生返回值。它用參數(shù)組成邏輯表達(dá)式并且對(duì)表達(dá)式進(jìn)行評(píng)估。test命令不會(huì)產(chǎn)生標(biāo)準(zhǔn)輸出,你必須必須通過(guò)返回值來(lái)判斷test命令的結(jié)果。如果表達(dá)式為真,返回值會(huì)為0,如果表達(dá)式為假,返回值為1。test命令可以被單獨(dú)使用,
2、然后你能夠看到返回值,但它用的最多的還是在if和while結(jié)構(gòu)中,用來(lái)提供條件流程控制。test命令的也可以用[expression]來(lái)代替。這對(duì)提高可讀性有幫助,特別是在處理數(shù)字或者字符串的時(shí)候。注意:在"["和"]"符號(hào)的周?chē)仨氁锌崭?。test命令之?dāng)?shù)字test語(yǔ)法:[numberrelationnumber] 通過(guò)關(guān)系運(yùn)算符來(lái)對(duì)數(shù)字進(jìn)行比較關(guān)系運(yùn)算符:-lt ??小于-le 小于或者等于-gt ??大于-ge 大于或者等于-eq 等于-ne 不等于例子(假設(shè)X=3):$["$X"-lt7] $["$X"-gt
3、7]$echo$? $echo$?0 1test命令能被用于比較兩個(gè)整數(shù)之間的數(shù)字關(guān)系。通常用[.....]語(yǔ)法來(lái)調(diào)用。test命令的返回值就能說(shuō)明這個(gè)條件為真還是為假。當(dāng)testing一個(gè)變量的值的時(shí)候,你應(yīng)該防止變量不要為空值,例如:$[$XX-eq3]sh:test:argumentexpected如果變量XX在前面沒(méi)有被賦值,XX的值會(huì)是NULL。當(dāng)shell執(zhí)行變量替代的時(shí)候,shell會(huì)試圖執(zhí)行如下語(yǔ)句:[-eg3]而這個(gè)語(yǔ)句不是一個(gè)完整的test語(yǔ)句,并且會(huì)導(dǎo)致一個(gè)語(yǔ)法錯(cuò)誤。解決這個(gè)問(wèn)題的一個(gè)簡(jiǎn)單的方法就是在被測(cè)試
4、的變量的周?chē)由弦?hào)。["$XX"-eq3]當(dāng)shell執(zhí)行變量替代的時(shí)候,shell會(huì)試圖執(zhí)行如下語(yǔ)句:[""-eq3]這會(huì)確保至少有一個(gè)NULL值作為一個(gè)參數(shù)提供給這個(gè)test命令使用。注意:作為一個(gè)通用的規(guī)則,你應(yīng)該在所有的$變量加上雙引號(hào)來(lái)避免shell進(jìn)行不正確的變量的替代。test命令之字符串test語(yǔ)法:[string1=string2]判斷字符串是否相等[string1!=string2]判斷字符串是否不等例子;$X=abc $X=abc$["$X"="abc"] ??????$["$X" !="abc"]$ec
5、ho$? $echo$?0 1test命令也能夠用來(lái)計(jì)較兩個(gè)字符串是否相等。[...]語(yǔ)法通常用作字符串的比較。你已經(jīng)看到在[]周?chē)仨氁锌崭瘢瑫r(shí)在操作符周?chē)脖仨氁锌崭翊嬖?。字符串操作包括:string1=string2 ??如果string1等于string2就為真string1!=string2 ????如果string1不等于string2就為真-zstring 如果string的長(zhǎng)度為0就為真-nstring 如果string的長(zhǎng)度為非零就為真string
6、 如果string的長(zhǎng)度為非零就為真如果變量中包含空白字符,在這里引號(hào)同樣也能夠保護(hù)字符串的test,,例如:$X="yeswewill"$[$X=yes] 會(huì)導(dǎo)致一個(gè)語(yǔ)法錯(cuò)誤shell會(huì)解釋這個(gè)語(yǔ)法為[yeswewill=yes]$["$x"=yes] 正確的語(yǔ)法shell會(huì)解釋這個(gè)語(yǔ)法為:["yeswewill"=yes]在執(zhí)行數(shù)字比較的時(shí)候,shell會(huì)將所有的參數(shù)當(dāng)成是數(shù)字;在執(zhí)行字符串比較的時(shí)候,shell會(huì)把所有的參數(shù)當(dāng)成是字符串。如下例所示:$X=03$Y=3$["$X"-eq"$Y"] 比較數(shù)字03和數(shù)字3$echo
7、$?0 為真-它們是相等的數(shù)字$["$X"="$Y"] 比較字符串“03”和字符串“3”$echo$?1 為假-它們是不相同的字符串test命令-文件比較語(yǔ)法:test-optionfilename 通過(guò)選項(xiàng)對(duì)文件進(jìn)行test例子:$test-ffunfile$echo$?0$test-dfunfile$echo$?1shell提供的一個(gè)有用的test特性是可以用它來(lái)test文件的特征,例如文件類(lèi)型和許可權(quán)限。例如:$test-ffilename如果文件存在并且是一個(gè)普通文件(不是目錄或者設(shè)備文件
8、),會(huì)返回真(0)。test-sfilename如果文件存在并且其字節(jié)數(shù)大于0,會(huì)返回真(0)。其它還有許多