




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
Linux應(yīng)用與開發(fā)典型實(shí)例精講配套教材:《Linux應(yīng)用與開發(fā)典型實(shí)例精講》
邱鐵、于玉龍、徐子川編著.
.2010.5Email:第4章Shell程序設(shè)計(jì)
學(xué)習(xí)本章要達(dá)到的目標(biāo):1.學(xué)會(huì)使用Shell編程,能夠編寫Shell腳本程序;2.掌握Shell編程中用到的變量、流程控制語句、常用命令、特殊符號(hào);3.基本學(xué)會(huì)使用Shell腳本函數(shù)。4.1Shell編程簡(jiǎn)介Shell提供了一種以腳本文件的方式來實(shí)現(xiàn)之,將所有需要執(zhí)行的命令按照類似于編程的方法寫到一個(gè)文件中,當(dāng)需要使用時(shí),只需要運(yùn)行這個(gè)文件即可完成指定的任務(wù)
Shell腳本文件的運(yùn)行同可執(zhí)行文件的使用方法相同,在命令提示符下輸入文件的路徑即可運(yùn)行
4.2系統(tǒng)變量4.3條件測(cè)試條件測(cè)試可以判斷腳本程序運(yùn)行的狀態(tài)。它常用于條件分支,以便在不同的運(yùn)行狀態(tài)下執(zhí)行不同的命令。
[param1
判斷符號(hào)
param2][判斷符號(hào)
param]
4.3.1文件狀態(tài)測(cè)試-b
判斷文件是否為塊設(shè)備,若文件不存在返回假。-c 判斷文件是否為字符設(shè)備,若文件不存在返回假。-dpathname
判斷路徑pathname是否為目錄,若路徑不存在返回假。-epathname
判斷路徑pathname是否存在。-f 判斷文件是否為真會(huì)文件,若文件不存在返回假。-gpathname
判斷路徑pathname是否設(shè)置了SGID位,若路徑不存在返回假。-h 判斷文件是否為鏈接文件,若文件不存在返回假。-kpathname
判斷路徑pathname是否設(shè)置了“粘滯”位,若路徑不存在返回假。-p 判斷文件是否為管道文件,若文件不存在返回假。-rpathname
判斷路徑pathname是否為可讀,若路徑不存在返回假。-s 判斷文件的尺寸是否大于0,若文件不存在返回假。-S 判斷文件是否是Socket,文件不存在返回假。-upathname
判斷路徑pathname是否設(shè)置了SUID位,若路徑不存在返回假。-wpathname
判斷路徑pathname是否為可寫,若路徑不存在返回假。-xpathname
判斷路徑pathname是否為可執(zhí)行,若路徑不存在返回假。-Opathname
判斷路徑pathname是否為當(dāng)前用戶所擁有,若路徑不存在返回假。-Gpathname
判斷路徑pathname的用戶組是否為當(dāng)前用戶所在組,若路徑不存在返回假。file1-ntfile2
判斷文件file1是否比文件file2新。file1-otfile2
判斷文件file1是否比穩(wěn)健file2舊。
4.3.2邏輯操作param1–aparam2
邏輯與。param1–oparam2
邏輯或。!param
邏輯非。4.3.3字符串測(cè)試-zstring
判斷字符串string是否為空串,即長(zhǎng)度為0。-nstring
判斷字符串string是否為非空串。string1=string2
判斷字符串string1和string2是否相等。string1!=string2
判斷字符串string1和string2是否不等。string1<string2
按字符編碼表排序,字符串string1是否在string2之前。string1>string2
按字符編碼表排序,字符串string1是否在string2之后。4.3.4數(shù)值測(cè)試val1–eqval2
判斷val1和val2的數(shù)值是否相等。val1–neval2
判斷val1和val2的數(shù)值是否不等。val1–ltval2
判斷val1是否小于val2。val1–leval2
判斷val1是否小于等于val2。val1–gtval2
判斷val1是否大于val2。val1–geval2
判斷val1是否大于等于val2。4.4Shell流程控制語句流程控制包括條件執(zhí)行、循環(huán)、分支執(zhí)行。4.4.1if語句if…;then……elif…;then……else……fi
4.4.2case語句casestrinpattern)dosomething;;……esac
4.4.3while語句while…;do……Doneuntil…;do……done
4.4.4for語句forvarinstr1
str2…;do……done
4.5Shell編程中的常用命令與符號(hào)4.5.1read命令
命令的語法:read[參數(shù)]變量名常用的參數(shù)如下:-ttimeout 設(shè)定超時(shí)時(shí)間。-pprompt 設(shè)定提示信息,該提示信息將會(huì)顯在光標(biāo)前。4.5.2select命令selectvarinstr1
str2…;dobreak;done
4.5.3花括號(hào)花括號(hào)是一種強(qiáng)制的整體標(biāo)識(shí),可以讓一個(gè)非整體的字符串強(qiáng)制的解釋成一個(gè)整體
{catabc.txtecho“aaa”}
4.5.4引號(hào)單引號(hào)可以取消所有的轉(zhuǎn)義符號(hào)、通配符和分隔符,雙引號(hào)取消通配符和分隔符的轉(zhuǎn)義,但對(duì)于變量依然進(jìn)行轉(zhuǎn)義
4.5.5注釋注釋語句所在行的第一個(gè)字符必須為“#”,其后是注釋的內(nèi)容。
4.6函數(shù)Shell中函數(shù)被看成是一個(gè)小的腳本程序,僅在當(dāng)前腳本內(nèi)部進(jìn)行調(diào)用
funname(){……}
4.7應(yīng)用實(shí)例訓(xùn)練例1.需要完成一個(gè)程序,用戶輸入百分制的分?jǐn)?shù),之后返回“A”“B”“C”“D”“E”的等級(jí)。其中,A等級(jí)為90至100分,B等級(jí)為80至89分,C等級(jí)為70至79分,D等級(jí)為60至69分,E等級(jí)為0至59分。needquit=0while[$needquit-eq0]do echo"Pleaseinputthescore" readscore case$scorein 100|9[0-9])echo"VeryGood";;
8[0-9])echo"Good";; 7[0-9])echo"Middle";; 6[0-9])echo"Pass";; [1-5][0-9])echo"Failure";; quit|q)echo"Quit"
needquit=1;; *)echo"WrongInput!";; esac echo""done
例2.完成一個(gè)文件操作,根據(jù)用戶指定的目錄,刪除其中所有文件名以“.c”結(jié)尾的文件,若這些文件刪除后,目錄中沒有其他的文件,則將該目錄也一并刪除。foriin$*;do find“$i”–name“*.c”–execrm–r–f{}\;
[“$i/*”=$i/*]&&{
rmdir“$i”
echo“DeleteDirectory$i” }done
思考與練習(xí)思考Shell編程與Shell命令之間的關(guān)系。閱讀資料,了解Shell啟動(dòng)的流程,體會(huì)Shell腳本程序在Shell啟動(dòng)過程中的作用。用Shell編程的形式完成下列程序:輸出用戶通過命令行參數(shù)形式提供的多個(gè)整數(shù)的平均數(shù)。具體調(diào)用格式如下:$./avg12345678Average:45經(jīng)常不斷地學(xué)習(xí),你就什么都知道。你知道得越多,你就越有力量StudyConstantly,AndYouWillKnowEverything.TheMoreYouKnow,TheMo
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 用于公開演講或會(huì)議發(fā)言的文本
- 2025年池州貨物運(yùn)輸駕駛員從業(yè)資格考試系統(tǒng)
- 勞務(wù)施工總承包合同
- 故宮博物館放票規(guī)則
- 建筑裝飾植筋工程勞務(wù)分包合同
- 公共廁所裝飾裝修施工合同
- 業(yè)務(wù)合同登記表格
- 環(huán)境監(jiān)測(cè)技術(shù)操作規(guī)范及標(biāo)準(zhǔn)解讀
- 整體櫥柜合同
- 建筑勞務(wù)派遣工合同
- 22陳涉世家 司馬遷 公開課一等獎(jiǎng)創(chuàng)新教學(xué)設(shè)計(jì) 度部編版初中語文九年級(jí)下冊(cè)
- 2021年飽和蒸汽及過熱蒸汽焓值表
- 《抗戰(zhàn)中的英雄人物》課件
- 外墻真石漆施工方案
- 森林防火安全生產(chǎn)工作
- 《服裝市場(chǎng)營銷》課件
- 網(wǎng)絡(luò)安全風(fēng)險(xiǎn)評(píng)估報(bào)告模板
- 什么是法律談判課件
- 成考教材-數(shù)學(xué)教程(文史財(cái)經(jīng)類)
- 保安服務(wù)管理制度范文
- 汽車行業(yè)維修記錄管理制度
評(píng)論
0/150
提交評(píng)論