速成第17章條件測試_第1頁
速成第17章條件測試_第2頁
速成第17章條件測試_第3頁
免費(fèi)預(yù)覽已結(jié)束,剩余1頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、第17章 條 件 測 試寫時,有時要字符串是否相等,可能還要檢查文件狀態(tài)或是數(shù)字測試?;谶@些測試才能做進(jìn)一步動作。 Test命令用于測試字符串,文件狀態(tài)和數(shù)字,也很適合提到的if、then、else條件結(jié)構(gòu)。本章內(nèi)容有: 對文件、字符串和數(shù)字使用test命令。 對數(shù)字和字符串使用expr命令。一expr命令測試和執(zhí)行數(shù)值輸出。使用最后示正確, 1表示返回錯誤。狀態(tài)命令 $?可測知test和expr,二者均以0表17.1測試文件狀態(tài)test一般有兩種格式,即:test condition 或condition使用方括號時,要注意在條件兩邊加上空格。測試文件狀態(tài)的條件表很多,但是最常用的可在表

2、17-1中查到。表17-1 文件狀態(tài)測試使用兩種方法測試文件scores.txt是否可寫并用最后,其他為失敗。狀態(tài)測試是否。記住, 0表示兩種狀態(tài)均返回0,可知文件scores.txt可寫,現(xiàn)在測試其是否可執(zhí)行:查看文件scores.txt權(quán)限列表,可知結(jié)果正如所料。下面的例子測試是否存在appsbin目錄-d目錄-f正規(guī)文件-L符號連接-r可讀-s文件長度大于0、非空-w可寫-u文件有suid位設(shè)置-x可執(zhí)行第17章 條 件 測 試155目錄appsbin果然存在。測試文件權(quán)限是否設(shè)置了suid位從結(jié)果知道suid位已設(shè)置。17.2 測試時使用邏輯操作符測試文件狀態(tài)是否為OK,但是有時要比較

3、兩個文件狀態(tài)。 shell提供三種邏輯操作完成此功能。-a 邏輯與,操作符兩邊均為真,結(jié)果為真,否則為假。-o 邏輯或,操作符兩邊一邊為真,結(jié)果為真,否則為假。! 邏輯否,條件為假,結(jié)果為真。下面比較兩個文件:下面的例子測試兩個文件是否均可讀。結(jié)果為真。要測試其中一個是否可執(zhí)行,使用邏輯或操作。scores.txt不可執(zhí)行,但results.txt可執(zhí)行。要測試文件results.txt是否可寫、可執(zhí)行:結(jié)果為真。17.3 字符串測試字符串測試是錯誤捕獲很重要的一部分,特別在測試用戶輸入或比較變量時尤為重要。字符串測試有5種格式。156第四部分 基礎(chǔ)shell編程這里,string_opera

4、tor可為:=兩個字符串相等。!= 兩個字符串不等。-z空串。-n非空串。要測試環(huán)境變量EDITOR是否為空:非空,取值是否是vi?是的,用echo命令反饋其值:測試變量tape與變量tape2是否相等:不相等。沒有規(guī)定在設(shè)置變量時一定要測試變量tape與tape2是否不相等。引號,但在進(jìn)行字符串比較時必須這樣做。是的,它們不相等。17.4測試數(shù)值測試數(shù)值可以使用許多操作符,一般格式如下:"number"numeric_operator"number" 或者"number"numeric_operator"number&qu

5、ot;numeric_operator可為:-eq-ne-gt-lt數(shù)值相等。 數(shù)值不相等。第一個數(shù)大于第二個數(shù)。第一個數(shù)小于第二個數(shù)。-le 第一個數(shù)小于等于第二個數(shù)。-ge 第一個數(shù)大于等于第二個數(shù)。下面的例子返回結(jié)果都一樣。均為測試兩個數(shù)是否相等( 130是否等于130)。第17章 條 件 測 試157結(jié)果果然正確。改變第二個數(shù),結(jié)果返回失敗,狀態(tài) 1(130不等于200)測試130是否大于100:當(dāng)然。也可以測試兩個整數(shù)變量。下面測試變量 source_count是否小于dest_count:可以不必將整數(shù)值放入變量,直接用數(shù)字比較即可,但要加引號??梢杂眠壿嫴僮鞣麑蓚€測試表結(jié)合起來

6、。僅需要用到一對方括號,而不能用兩個,否則將返回錯誤信息“ too many arguments”。下面例子測試兩個表,如果,結(jié)果為真,正確使用方式應(yīng)為:17.5 expr用法expr命令一般用于整數(shù)值,但也可用于字符串。一般格式為:expr argument operator argument expr也是一個手工命令行計(jì)數(shù)器。使用乘號時,必須用反斜線其特定含義。因?yàn)?shell可能會誤解顯示星號的意義。158第四部分 基礎(chǔ)shell編程17.5.1 增量計(jì)數(shù)expr在循環(huán)中用于增量計(jì)算。首先,循環(huán)初始化為 0,然后循環(huán)值加 1,反引號的用法意即替代命令。最基本的一種是從( expr)命令接

7、受輸出并將之放入循環(huán)變量。17.5.2 數(shù)值測試可以用expr測試一個數(shù)。如果試圖計(jì)算非整數(shù),將返回錯誤。這里需要將一個值賦予變量(不管其內(nèi)容如何),進(jìn)行數(shù)值運(yùn)算,并將輸出導(dǎo)入 dev/null,然后測試最后命令狀態(tài),如果為 0,證明這是一個數(shù),其他則表明為非數(shù)值。這是一個數(shù)。這是一個非數(shù)值字符。expr也可以返回其本身的狀態(tài),不幸的是返回值最后命令剛好相反,成功返回1,任何其他值為無效或錯誤。下面的例子測試兩個字符串是否相等,這里字符串為“hello”和“hello”。expr返回1。不要了,這表明?,F(xiàn)在檢驗(yàn)其最后狀態(tài),返回 0表示測試,“hello”確實(shí)等于“ hello”。17.5.3 模式匹配expr也有模式匹配功能??梢允褂?expr通過指定冒號選項(xiàng)計(jì)算字符串中字符數(shù)。 .*意即任何字符重復(fù)0次或多次。在expr中可以使用字符串匹配操作,這里使用模式 .doc抽取

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論