



下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、shell編程shell編程分支語句(1)Shell編程分支語句(1)目標:完成這一章,你將能夠作以下事情:描述條件分支語句中返回值的作用。 使用test命令來分析一個命令的返回值。 在shell程序中使用if和case結構。 1.返回值shell變量“?”中保存上一個被執(zhí)行命令的返回值:0: 命令成功地執(zhí)行(真)非零:命令由于出現(xiàn)錯誤而被終止(假)例子:$ true $ false$ echo $? $ echo $?0 1$ ls $ cp $ echo $? Usage: cp f1 f20 cp -r f1 .fn d1$ echo $?$echo $?0 1 $echo $? 0UN
2、IX操作系統(tǒng)的所有命令在結束的時候都會產生一個返回值。這個返回值通常被用來判斷命令是正常結束(返回0)還是發(fā)生了錯誤(返回非零值)。通過返回的非零值還可以看出發(fā)生的是什么錯誤。例如,語法錯誤通常返回1,true命令返回的就是0,而false命令返回的是1。大多數(shù)的shell程序中的判斷語句都是通過分析這個返回值來進行流程控制的。shell中定義了一個特殊的變量“?”用來保存上一個命令結束后的返回值。你可以通過以下方式來觀察前一個命令的返回值:echo $?當你執(zhí)行一個條件判斷(小于,大于,等于)的時候,返回值會指明這個條件是否為真(返回0)或者為假(返回非零)。條件判斷語句會在下幾節(jié)中講述。2
3、.test 命令語法:test expression 或者 expressiontest命令對表達式進行測試,并且設置返回值。表達式的值 返回值true0false 非零(通常為1)test命令能夠測試的對象有:整數(shù) 字符串 文件 test命令被用來評估表達式并且產生返回值。它用參數(shù)組成邏輯表達式并且對表達式的返回值進行評估,test命令不會產生標準輸出,你必須必須通過返回值來判斷test命令的結果,如果表達式為真,返回值會為0,如果表達式為假,返回值為1。test命令可以被單獨使用,然后你能夠看到返回值,但它用的最多的還是在if和while結構中用來提供條件流程控制。test命令的也可以用e
4、xpression來代替。這種方式可以提高可讀性,特別是在處理數(shù)字或者字符串的時候。注意:在和符號的周圍必須要有空格。3.test命令之數(shù)字test語法: number relation number 通過關系運算符來對數(shù)字進行比較關系運算符:-lt 小于-le 小于或者等于-gt 大于-ge 大于或者等于-eq 等于-ne 不等于例子(假設X=3):$ $X -lt 7$ $X -gt 7$ echo $? $ echo $?0 1test命令能被用于比較兩個整數(shù)之間的數(shù)字關系,通常用.語法來調用。test命令的返回值就能說明這個條件為真還是為假。當test一個變量的值的時候,你應該防止變量
5、不要為空值,例如:$ $XX -eq 3sh: test:argument expected如果變量XX在前面沒有被賦值,XX的值會是NULL。當shell執(zhí)行變量替代的時候,shell會試圖執(zhí)行如下語句: -eg 3而這個語句不是一個完整的test語句,并且會導致一個語法錯誤。解決這個問題的一個簡單的方法就是在被測試的變量的周圍加上引號。 $XX -eq 3當shell執(zhí)行變量替代的時候,shell會試圖執(zhí)行如下語句: -eq 3這會確保至少有一個NULL值作為一個參數(shù)提供給這個test命令使用。注意:作為一個通用的規(guī)則,你應該在所有的$變量加上雙引號來避免shell發(fā)生不正確的變量的替代。
6、4.test命令字符串test語法: string1 = string2 判斷字符串是否相等 string1 !=string2 判斷字符串是否不等例子;$ X=abc $ X=abc$ $X = abc $ $X ! abc$ echo $? $ echo $?0 1test命令也能夠用來計較兩個字符串是否相等。. 語法通常用作字符串的比較。你已經看到在周圍必須要有空格,同時在操作符周圍也必須要有空格存在。字符串操作包括:string1 = string2 如果string1等于string2就為真string1 != string2 如果string1不等于string2就為真-z str
7、ing 如果string的長度為0就為真-n string 如果string的長度為非零就為真string 如果string的長度為非零就為真為了防止變量中包含空白字符,這里引號同樣也能夠保護字符串的test,例如:$ X=yes we will$ $X=yes 會導致一個語法錯誤shell會解釋這個語句為yes we will = yes $ $x = yes 正確的語法shell會解釋這個語句為: yes we will = yes 在執(zhí)行數(shù)字比較的時候,shell會將所有的參數(shù)當成是數(shù)字,在執(zhí)行字符串比較的時候,shell會把所有的參數(shù)當成是字符串。如下例所示:$ X=03$ Y=3$
8、$X -eq $Y 比較數(shù)字03和數(shù)字3$ echo $?0為真,因為它們是相等的數(shù)字$ $X = $Y 比較字符串“03”和字符串“3”$ echo $?1為假,因為它們是不相同的字符串5.test命令 文件比較語法:test -option filename通過選項對文件進行test例子:$ test -f funfile$ echo $?0$ test -d funfile$ echo $?1shell提供的一個有用的test特性是可以用它來test文件的特征,例如文件類型和許可權限。例如:$ test -f filename如果文件存在并且是一個普通文件(不是目錄或者設備文件),會返回
9、真(0)。test -s filename如果文件存在并且其字節(jié)數(shù)大于0,會返回真(0)。其它還有許多有用的文件test方式,比如:-r file如果文件存在并且是可讀的時候為真-w file 如果文件存在并且是可寫的時候為真-x file 如果文件存在并且是可執(zhí)行的時候為真-d directory 目錄存在并且是個目錄的時候為真6.test命令其他操作符語法:-o OR-a AND( ) GROUPING例子:$ $ANS = y -o ANS = Y $ $NUM -gt 10 -a $NUM -lt 20 $ test -s file -a -r file注意:()前面必須要用斜杠。使用
10、Boolean操作符可以同時測試多個條件。例子:$ $ANS = y -o $ANS = Y $ $NUM -gt 10 -a $NUM -lt 20 $ test -s file -a -r file -a -x fileNOT操作符(!)被用作連接其他的操作符,特別是在文件test的時候用的很普遍。在!操作符和其他的操作符之間必須要有空格,例如:test ! -d file能夠用來代替test -f file -o -c file -o -b file .括號被用來對操作符進行分組,但是在shell中括號還有一個特殊的意義就是優(yōu)先運算的意義。因此,括號前面必須使用符號來忽略其原有含義。以下的命令驗證:有兩個命令行參數(shù),并且第一個命令行參數(shù)是一個-m ,并且最后一個命令行參數(shù)是一個目錄或者是一個字節(jié)數(shù)大于0的文件: ( $# = 2 ) -a ( $1 = -m ) -a ( -d $2 -o -s $2 ) 7.exit命令語法:exit arg例子:$ cat exit_test
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年模型制作行業(yè)市場需求分析報告及未來五至十年行業(yè)預測報告
- 各負其責教學課件
- 鹵素水份測定儀項目投資可行性研究分析報告(2024-2030版)
- 連鎖藥店新員工培訓課件
- 2024年中國鉻礦石行業(yè)市場調查報告
- 稅務師網課平臺課件下載
- 2025年 物流服務師高級考試練習題庫附答案
- 2025年中國腔體濾波器行業(yè)市場全景分析及投資策略研究報告
- 2025年 臨沂羅莊區(qū)區(qū)直單位公益性崗位招聘考試筆試試題附答案
- 物流園項目可行性研究報告
- 2025年全國新高考II卷高考全國二卷真題英語試卷(真題+答案)
- 江蘇省揚州市2023-2024學年高一下學期6月期末 英語試卷(含答案無聽力)
- 通信員工安全試題及答案
- 2025年洗紋身協(xié)議書
- 《老年人認知記憶訓練》課件
- 經濟法學-001-國開機考復習資料
- 一年級家長會課件2024-2025學年
- 滬教版八年級化學(下冊)期末試卷及答案
- 2024年廣東省中考生物+地理試卷(含答案)
- 消防系統(tǒng)檢測方案(完整版)
- 2021年衛(wèi)生系統(tǒng)招聘(口腔醫(yī)學匯總)考試歷年真題匯總及答案
評論
0/150
提交評論