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