




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
項(xiàng)目4Shell腳本編程基礎(chǔ)項(xiàng)目情境4.1項(xiàng)目任務(wù)4.2知識儲備4.3任務(wù)實(shí)施4.4拓展訓(xùn)練4.5總結(jié)評價(jià)4.61知識目標(biāo)3素質(zhì)目標(biāo)2技能目標(biāo)了解Shell的基本概念、種類,Shell中的變量了解Shell變量表達(dá)式了解Shell的輸入輸出掌握Shell腳本的編寫方法掌握Shell腳本的執(zhí)行方法熟悉Shell的基本語法結(jié)構(gòu)能編寫簡單的Shell程序會在Shell中使用參數(shù)進(jìn)行編程會使用表達(dá)式進(jìn)行Shell編程會使用循環(huán)語句進(jìn)行Shell編程會使用條件語句進(jìn)行Shell編程養(yǎng)認(rèn)真細(xì)致的工作態(tài)度和工作作風(fēng)養(yǎng)成刻苦、勤奮、好問、獨(dú)立思考和細(xì)心檢查的學(xué)習(xí)習(xí)慣能與組員精誠合作,能正確面對他人的成功或失敗具有一定的自學(xué)能力,分析問題、解決問題能力和創(chuàng)新能力本項(xiàng)目詳細(xì)介紹了Shell編程的一些基本知識、Shell的種類、Shell中的變量、變量表達(dá)式、Shell的輸入輸出以及Shell的基本語法結(jié)構(gòu)。通過任務(wù)案例引導(dǎo)大家學(xué)習(xí)Shell編程的方法和技巧;具體訓(xùn)練大家進(jìn)行簡單的Shell編程、在Shell中使用參數(shù)進(jìn)行編程、使用表達(dá)式進(jìn)行編程、使用循環(huán)語句進(jìn)行編程和使用條件語句進(jìn)行編程的能力?!窘虒W(xué)導(dǎo)航】
4.1項(xiàng)目情境在天易教育培訓(xùn)中心的網(wǎng)絡(luò)改造項(xiàng)目中,曹杰對謝奇林和楊濤等技術(shù)人員的培訓(xùn)進(jìn)展順利。在前一段時(shí)間謝奇林和楊濤等技術(shù)人員學(xué)會了在終端模式下使用命令對Linux的文件系統(tǒng)、磁盤、用戶與群組、軟件包和進(jìn)程等進(jìn)行維護(hù)與管理。但是,一位合格的Linux系統(tǒng)管理員或運(yùn)維工程師,必須具備編寫Shell腳本語言、閱讀系統(tǒng)及軟件附帶Shell腳本內(nèi)容的能力,只有這樣才能提升工作效率,適應(yīng)復(fù)雜的工作環(huán)境,減少不必要的重復(fù)工作,有什么好的方法讓天易教培中心的技術(shù)人員盡快了解Linux的Shell腳本編程呢?
4.2項(xiàng)目任務(wù)曹工深入研究了Shell腳本編程在系統(tǒng)管理與運(yùn)維工作中的地位和作用,并根據(jù)自己所學(xué)的知識及多年的工作經(jīng)驗(yàn),確定了培訓(xùn)謝奇林和楊濤等技術(shù)人員掌握Shell腳本編程的基本方法和具體任務(wù)是:1、熟悉Shell的語法和特點(diǎn)。2、掌握Shell中變量的分類與使用。3、完成帶參數(shù)的Shell程序的編寫。4、完成表達(dá)式比較的Shell程序的編寫。5、完成循環(huán)結(jié)構(gòu)的Shell程序的編寫。6、完成條件結(jié)構(gòu)的Shell程序的編寫。
4.3知識儲備
Shell是一種應(yīng)用程序,當(dāng)用戶登錄Linux系統(tǒng)時(shí),Shell就會被調(diào)入內(nèi)存執(zhí)行。Shell獨(dú)立于內(nèi)核,它是連接內(nèi)核和應(yīng)用程序的橋梁,并由輸入設(shè)備讀取命令,再將其轉(zhuǎn)為計(jì)算機(jī)可以理解的機(jī)械碼,Linux內(nèi)核才能執(zhí)行該命令。圖4-1描述了Shell在Linux系統(tǒng)中的位置。Shell接到用戶輸入的命令后首先檢查命令是否是內(nèi)部命令,若不是再檢查是否是一個(gè)應(yīng)用程序。當(dāng)普通用戶成功登錄后,系統(tǒng)將執(zhí)行一個(gè)稱為Shell的程序。正是Shell進(jìn)程提供了命令行提示符。對普通用戶用“$”作提示符,對超級用戶(root)用“#”作提示符。一旦出現(xiàn)了Shell提示符,就可以鍵入命令名稱及命令所需要的參數(shù)。Shell將執(zhí)行這些命令。4.3.1Shell概述在Linux的系統(tǒng)管理與使用過程中,文件系統(tǒng)是管理員打交道最多,也是最基本的管理對象。文件系統(tǒng)中的文件是數(shù)據(jù)的集合,文件系統(tǒng)不僅包含著文件中的數(shù)據(jù),而且還有文件系統(tǒng)的結(jié)構(gòu),所有Linux用戶和程序看到的文件、目錄、文件保護(hù)信息等都存儲在文件系統(tǒng)中。
Linux系統(tǒng)的shell作為操作系統(tǒng)的外殼,為用戶提供使用操作系統(tǒng)的接口。每個(gè)Linux系統(tǒng)的用戶都可以擁有自己的用戶界面或Shell,用以滿足自己專門的Shell需要,目前主要的Shell版本有。sh(全稱BourneShell):是貝爾實(shí)驗(yàn)室開發(fā)的。BourneShell是UNIX最初始的Shell,并且在每種UNIX上都可以使用。BourneShell在Shell編程方面相當(dāng)優(yōu)秀,但在處理與用戶的交互方面做得不如其他幾種Shell。BASH:是GNU的BourneAgainShell,是GNU操作系統(tǒng)上默認(rèn)的Shell。與BourneShell完全兼容,并且在BourneShell的基礎(chǔ)上增加了很多特性。KornShell:是對BourneShell的發(fā)展,在大部分內(nèi)容上與BourneShell兼容。KornShell集合了CShell和BourneShell的優(yōu)點(diǎn),并且和BourneShell完全兼容。CShell:是SUN公司Shell的BSD版本。CShell是一種比BourneShell更適于編程的Shell,它的語法與C語言很相似。Linux為喜歡使用CShell的人員提供了Tcsh。Tcsh是CShell的一個(gè)擴(kuò)展版本。。Pdksh:是Linux系統(tǒng)提供的ksh的擴(kuò)展。pdksh支持人物控制,可以在命令行上掛起,后臺執(zhí)行,喚醒或終止程序。4.3.2Linux文件系統(tǒng)的組織方式
4.3知識儲備
4.3知識儲備在Linux里有很多的變量,大致可分為三種:環(huán)境變量、內(nèi)部變量和用戶變量。用戶可以通過這些變量獲得系統(tǒng)、環(huán)境的信息。Shell編程語言中的變量沒有類型(即不需要說明變量是數(shù)值型還是字符型)。4.3.3Shell中的變量
1.環(huán)境變量環(huán)境變量是系統(tǒng)環(huán)境的部分,例如,用戶的登錄子目錄、使用的終端類型等,常用的Shell環(huán)境變量如下。HOME:用于保存注冊目錄的完全路徑名。PATH:用于保存用冒號分隔的目錄路徑名。TERM:終端的類型。UID:當(dāng)前用戶的識別字,取值是由數(shù)位構(gòu)成的字串。PWD:當(dāng)前工作目錄的絕對路徑名,該變量的取值隨cd命令的使用而變化。2.內(nèi)部變量內(nèi)部變量是由系統(tǒng)提供的,用戶不能修改它們。用戶只能根據(jù)Shell的定義來使用這些變量,而不能重定義它們。所有預(yù)定義變量都是由$符和另一個(gè)符號組成的,常用的Shell預(yù)定義變量如下。$#:位置參數(shù)的數(shù)量。$*:所有位置參數(shù)的內(nèi)容。$?:命令執(zhí)行后返回的狀態(tài)。$$:當(dāng)前進(jìn)程的進(jìn)程號。$!:后臺運(yùn)行的最后一個(gè)進(jìn)程號。$0:當(dāng)前執(zhí)行的進(jìn)程名。
4.3知識儲備4.3.3Shell中的變量
3.用戶變量用戶變量是用戶在編寫Shell過程中,在Shell程序內(nèi)任意使用和修改的變量。這是用戶根據(jù)自己的需要進(jìn)行定義的,用戶可以按照下面的語法規(guī)則定義自己的變量:變量名=變量值在定義變量時(shí),變量名前不應(yīng)加符號$,在引用變量的內(nèi)容時(shí)則應(yīng)在變量名前加$;在給變量賦值時(shí),等號兩邊一定不能留空格,若變量中本身就包含了空格,則整個(gè)字串都要用雙引號括起來。4.位置參數(shù)位置參數(shù)是一種在調(diào)用Shell程序的命令行中按照各自的位置決定的變量,是在程序名之后輸入的參數(shù)。位置參數(shù)之間用空格分隔,Shell取第一個(gè)位置參數(shù)替換程序文件中的$1,第二個(gè)替換$2,以此類推。$0是一個(gè)特殊的變量,它的內(nèi)容是當(dāng)前這個(gè)Shell程序的文件名,所以,$0不是一個(gè)位置參數(shù),在顯示當(dāng)前所有的位置參數(shù)時(shí)不包括$0。5.參數(shù)置換的變量Shell提供了參數(shù)置換功能,以便用戶可以根據(jù)不同的條件來給變量賦不同的值。參數(shù)置換的變量有4種,它們的語法和功能分別如下。變量=${參數(shù)-word}:如果設(shè)置了參數(shù),則用參數(shù)的值置換變量的值,否則用word置換。變量=${參數(shù)=word}:如果設(shè)置了參數(shù),則用參數(shù)的值置換變量的值,否則把變量設(shè)置成word,然后再用word替換參數(shù)的值。變量=${參數(shù)?word}:如果設(shè)置了參數(shù),則用參數(shù)的值置換變量的值,否則就顯示word并從Shell中退出。變量=${參數(shù)+word}:如果設(shè)置了參數(shù),則用word置換變量,否則不進(jìn)行置換。
4.3知識儲備在編程中,既然有變量,就有關(guān)于變量的表達(dá)式——比較(test)。在Shell程序中,通常使用表達(dá)式的比較來完成邏輯任務(wù)。表達(dá)式所代表的操作符有字符操作符、數(shù)字操作符、邏輯操作符以及文件操作符。其中,文件操作符是一種Shell所特有的操作符。因?yàn)镾hell里的變量都是字符串,為了達(dá)到對文件進(jìn)行操作的目的,才提供了文件操作符。4.3.4變量表達(dá)式1.字符串比較作用:測試字符串是否相等,長度是否為零,字符串是否為NULL。
4.3知識儲備2.?dāng)?shù)字比較在BashShell編程中的關(guān)系運(yùn)算有別于其他編程語言。用test語句比較的運(yùn)算符如表4-2所示。4.3.4變量表達(dá)式3.邏輯操作在Shell程序設(shè)計(jì)中的邏輯運(yùn)算符如表4-3所示。
4.3知識儲備4.文件操作文件測試操作表達(dá)式通常是為了測試文件的信息,一般由腳本來決定文件是否應(yīng)該備份、復(fù)制或刪除。由于test關(guān)于文件的操作符有很多,在表4-4中只列舉一些常用的操作符。4.3.4變量表達(dá)式
4.3知識儲備在Shell腳本中,可以用幾種不同的方式讀入數(shù)據(jù):可以使用標(biāo)準(zhǔn)輸入,默認(rèn)為鍵盤,或者指定一個(gè)文件作為輸入。對于輸出也是一樣:如果不指定某個(gè)文件作為輸出,標(biāo)準(zhǔn)輸出總是和終端屏幕相關(guān)聯(lián)。如果所使用命令出現(xiàn)了什么錯(cuò)誤,它也會默認(rèn)輸出到屏幕上,如果不想把這些信息輸出到屏幕上,也可以把這些信息指定到一個(gè)文件中。4.3.5
Shell的輸入輸出1.echo使用echo命令可以顯示文本行或變量,或者把字符串輸入到文件。它的一般形式如下:2.read可以使用read語句從鍵盤或文件的某一行文本中讀入信息,并將其賦給一個(gè)變量。如果只指定了一個(gè)變量,那么read將會把所有的輸入賦給該變量,直至遇到第一個(gè)文件結(jié)束符或回車,它的一般形式如下:readvarible1varible2...3.catcat是一個(gè)簡單而通用的命令,可以用它來顯示文件內(nèi)容,創(chuàng)建文件,還可以用它來顯示控制字符。
4.3知識儲備4.3.5
Shell的輸入輸出4.管道可以通過管道把一個(gè)命令的輸出傳遞給另一個(gè)命令作為輸入。管道用豎杠“|”表示。它的一般形式如下:5.teetee命令的作用可以用字母T來形象地表示。它把輸出的一個(gè)副本輸送到標(biāo)準(zhǔn)輸出,另一個(gè)副本拷貝到相應(yīng)的文件中,它的一般形式如下:6.文件重定向在Shell中執(zhí)行命令時(shí),每個(gè)進(jìn)程都和三個(gè)打開的文件相關(guān)聯(lián),并使用文件描述符來引用這些文件。由于文件描述符不容易記憶,Shell同時(shí)也給出了相應(yīng)的文件名。
4.4任務(wù)實(shí)施Shell程序有很多類似C語言和其他程序設(shè)計(jì)語言的特征,但是又沒有程序語言那樣復(fù)雜。Shell程序是指放在一個(gè)文件中的一系列Linux命令和實(shí)用程序。4.4.1體驗(yàn)Shell編程任務(wù)4-1編寫一個(gè)Shell程序,要求提示用戶從鍵盤輸入姓名,再在屏幕顯示“Hello,xxx!”。教師演示學(xué)生模仿
4.4任務(wù)實(shí)施在GNOME操作界面的桌面單擊“活動”,在彈出的圖標(biāo)中選擇“終端”選項(xiàng),打開Shell窗口,如圖4-2所示。STEP01利用vi編輯器編輯腳本文件test.sh,操作方法如下:[root@TianYi~]#mkdirtest[root@TianYi~]#cdtest[root@TianYitest]#vitest.sh在test.sh文件中輸入以下內(nèi)容,輸入完成后保存退出。#!/bin/sh#Toshowhellotosomebodyecho-n"EnterYourName:"readNAMEecho"Hello,$NAME!"STEP02
4.4任務(wù)實(shí)施腳本編寫完成后給腳本添加執(zhí)行權(quán)限,操作方法如下:[root@tianyitest]#chmod+xtest.shSTEP03為了在任何目錄都可以編譯和執(zhí)行Shell所編寫的程序,最好把/bin的這個(gè)目錄添加到整個(gè)環(huán)境變量中。[root@tianyitest]#exportPATH=/bin:$PATHSTEP04運(yùn)行test.sh腳本,輸入你的姓名,檢查輸出結(jié)果,如圖4-4所示。STEP05
4.4任務(wù)實(shí)施教師演示學(xué)生模仿如同ls命令可以接受目錄等作為它的參數(shù)一樣,在Shell編程時(shí)同樣可以使用參數(shù)。Shell程序中的參數(shù)分為位置參數(shù)和內(nèi)部參數(shù)等。任務(wù)4-2編寫一個(gè)Shell程序,用于描述Shell程序中的位置參數(shù)為$0、$#、$?、$*,程序名為test1.sh。4.4.2在Shell程序中使用的參數(shù)1.位置參數(shù)的使用
4.4任務(wù)實(shí)施在GNOME操作界面的桌面單擊“活動”,在彈出的圖標(biāo)中選擇“終端”選項(xiàng),打開Shell窗口,如圖4-2所示。STEP011)利用vi編輯器編輯腳本文件test.sh,操作方法如下:2)在test1.sh文件中輸入以下內(nèi)容。3)輸入完成后保存退出,再給腳本添加執(zhí)行權(quán)限,操作方法如下:4)執(zhí)行test1.sh腳本,并傳遞5個(gè)參數(shù),執(zhí)行后的結(jié)果如下:STEP02
4.4任務(wù)實(shí)施教師演示學(xué)生模仿任務(wù)4-3利用內(nèi)部變量和位置參數(shù)編寫一個(gè)名為test2.sh的簡單刪除程序,如果刪除的文件為abc.txt,則在終端中執(zhí)行shell腳本時(shí)輸入的命令為:./test2.shabc.txt。4.4.2在Shell程序中使用的參數(shù)2.內(nèi)部參數(shù)的使用
4.4任務(wù)實(shí)施在GNOME操作界面的桌面單擊“活動”,在彈出的圖標(biāo)中選擇“終端”選項(xiàng),打開Shell窗口,如圖4-2所示:STEP011)利用vi編輯器編輯腳本文件test2.sh,操作方法如下:2)在test1.sh文件中輸入以下內(nèi)容:3)輸入完成保存退出,再給腳本添加執(zhí)行權(quán)限,操作方法如下:
[root@tianyitest]#chmod+xtest2.sh4)最后執(zhí)行test2.sh腳本,執(zhí)行后的結(jié)果如下:[root@TianYitest]#echo“1234”>abc//先在test目錄下建立abc文件[root@TianYitest]#./test2.shabc//執(zhí)行test2.sh腳本,壓縮、刪除abcSTEP02[root@tianyitest]#vitest2.sh
4.4任務(wù)實(shí)施教師演示學(xué)生模仿任務(wù)4-4從鍵盤輸入兩個(gè)字符串,判斷這兩個(gè)字符串是否相等,如相等輸出。4.4.3表達(dá)式的比較應(yīng)用1.字符串比較的使用
4.4任務(wù)實(shí)施在GNOME操作界面的桌面單擊“活動”,在彈出的圖標(biāo)中選擇“終端”選項(xiàng),打開Shell窗口,如圖4-2所示。STEP011)利用vi編輯器編輯腳本文件test3.sh,操作方法如下:[root@tianyitest]#vitest3.sh2)在test1.sh文件中輸入以下內(nèi)容:#!/bin/shreadar1readar2["$ar1"="$ar2"]echo$?#?保存前一個(gè)命令的返回碼3)輸入完成保存退出,再給腳本添加執(zhí)行權(quán)限,操作方法如下:[root@tianyitest]#chmod+xtest3.sh4)最后執(zhí)行test3.sh腳本,執(zhí)行后的結(jié)果如下:[root@TianYitest]#./test3.shaaabbb1STEP02
4.4任務(wù)實(shí)施教師演示學(xué)生模仿任務(wù)4-5設(shè)計(jì)一個(gè)從鍵盤輸入兩個(gè)數(shù)的腳本test4.sh,比較這兩個(gè)數(shù)是否相等,并輸出。4.4.3表達(dá)式的比較應(yīng)用2.?dāng)?shù)字比較的使用
4.4任務(wù)實(shí)施在GNOME操作界面的桌面單擊“活動”,在彈出的圖標(biāo)中選擇“終端”選項(xiàng),打開Shell窗口,如圖4-2所示。STEP011)利用vi編輯器編輯腳本文件test4.sh,操作方法如下:[root@tianyitest]#vitest4.sh2)在test4.sh文件中輸入以下內(nèi)容:#!/bin/shecho"pleaseinputxy"readxyiftest$x-eq$ythenecho"$x=$y"elseecho"$x!=$y"fi3)輸入完成后保存退出,再給腳本添加執(zhí)行權(quán)限,操作方法如下:[root@tianyitest]#chmod+xtest4.sh4)再執(zhí)行test4.sh腳本,執(zhí)行后的結(jié)果如下:[root@TianYitest]#./test4.shSTEP02
4.4任務(wù)實(shí)施教師演示學(xué)生模仿任務(wù)4-6分別給兩個(gè)字符變量賦值,一個(gè)變量賦予一定的值,另一個(gè)變量為空,求兩者的與、或操作,并輸出結(jié)果。4.4.3表達(dá)式的比較應(yīng)用3.邏輯操作的使用
4.4任務(wù)實(shí)施在GNOME操作界面的桌面單擊“活動”,在彈出的圖標(biāo)中選擇“終端”選項(xiàng),打開Shell窗口,如圖4-2所示。STEP011)利用vi編輯器編輯腳本文件test5.sh,操作方法如下:[root@tianyitest]#vitest5.sh2)在test5.sh文件中輸入以下內(nèi)容:#!/bin/bashpart1="1111"part2=""#part2為空["$part1"-a"$part2"]#注意左方括號后面和右方括號的前面有空格echo$?#保存前一個(gè)命令的返回碼["$part1"-o"$part2"]echo$?3)輸入完成保存退出,再給腳本添加執(zhí)行權(quán)限,操作方法如下:[root@tianyitest]#chmodu+xtest5.sh4)再執(zhí)行test5.sh腳本,執(zhí)行后的結(jié)果如下:[root@tianyitest]#./test5.sh10STEP02
4.4任務(wù)實(shí)施教師演示學(xué)生模仿任務(wù)4-7編寫一個(gè)Shell程序test6.sh,輸入一個(gè)字符串,如果是目錄,則顯示目錄下的信息;如果為文件,則顯示文件的內(nèi)容,否則顯示輸入錯(cuò)誤。4.4.3表達(dá)式的比較應(yīng)用4.文件操作的使用
4.4任務(wù)實(shí)施在GNOME操作界面的桌面單擊“活動”,在彈出的圖標(biāo)中選擇“終端”選項(xiàng),打開Shell窗口,如圖4-2所示。STEP011)利用vi編輯器編輯腳本文件test6.sh,操作方法如下:[root@tianyitest]#vitest6.sh2)在test4.sh文件中輸入以下內(nèi)容:#!/bin/Bashecho"Pleaseenterthedirectorynameorfilename"readDORFif[-d$DORF]thenls$DORFelif[-f$DORF]thencat$DORFelseecho"inputerror!"fiSTEP023)輸入完成后保存退出,再給腳本添加執(zhí)行權(quán)限,操作方法如下:[root@tianyitest]#chmodu+xtest6.sh[root@tianyitest]#echo“thisisfile”>abcd4)再執(zhí)行test6.sh腳本,執(zhí)行后的結(jié)果如下:[root@TianYitest]#./test6.shPleaseenterthedirectorynameorfilenameabcdthisisfile
4.4任務(wù)實(shí)施4.4.4循環(huán)結(jié)構(gòu)語句的使用1.for循環(huán)的使用有時(shí)會要求計(jì)算機(jī)重復(fù)執(zhí)行某一條或同一組指令多次,可以根據(jù)需要把那些指令復(fù)制到程序中其他新的語句行上來達(dá)到這種目的,不過更好的方法是讓計(jì)算機(jī)重復(fù)執(zhí)行那些已有的指令,這個(gè)過程稱為循環(huán)。Shell中提供了幾種執(zhí)行循環(huán)的命令,比較常見的命令有for、while、until、shift命令。當(dāng)知道循環(huán)執(zhí)行的具體次數(shù)時(shí),可以使用for循環(huán)。for循環(huán)對一個(gè)變量的可能的值都執(zhí)行一個(gè)命令序列。賦給變量的幾個(gè)數(shù)值既可以在程序內(nèi)以數(shù)值列表的形式提供,也可以在程序以外以位置參數(shù)的形式提供。for循環(huán)的一般格式如下:
4.4任務(wù)實(shí)施教師演示學(xué)生模仿任務(wù)4-8編寫一個(gè)Shell程序test7.sh,先生成test7.foo、test7new.foo文件,將.foo后綴的文件批量改名為.bar后綴,修改完成后查看修改結(jié)果。4.4.4循環(huán)結(jié)構(gòu)語句的使用
4.4任務(wù)實(shí)施在GNOME操作界面的桌面單擊“活動”,在彈出的圖標(biāo)中選擇“終端”選項(xiàng),打開Shell窗口,如圖4-2所示。STEP011)利用vi編輯器編輯腳本文件test7.sh,操作方法如下:[root@tianyitest]#vitest7.sh2)在test7.sh文件中輸入以下內(nèi)容:#!/bin/bashecho"123456">test7.fooecho"654321">test7new.fooforfin*.foo;dobase=`basename$f.foo`#特別提示,此處為倒引號(鍵盤左上角波浪號下方)
mv$f$base.bardonels-ltest7*STEP023)輸入完成保存退出,再給腳本添加執(zhí)行權(quán)限,操作方法如下:[root@tianyitest]#chmodu+xtest7.sh4)再執(zhí)行test7.sh腳本,執(zhí)行后的結(jié)果如下:[root@TianYitest]#./test7.sh-rw-r--r--.1rootroot72月2005:01test7.bar-rw-r--r--.1rootroot72月2005:01test7new.bar
4.4任務(wù)實(shí)施4.4.4循環(huán)結(jié)構(gòu)語句的使用2.while和until循環(huán)的使用while和until命令都是用命令的返回狀態(tài)值來控制循環(huán)的。while循環(huán)的一般格式如下::until命令是另一種循環(huán)結(jié)構(gòu),它和while命令相似,其格式如下:
4.4任務(wù)實(shí)施教師演示學(xué)生模仿任務(wù)4-9編寫一個(gè)Shell程序test8.sh,分別用while循環(huán)和until循環(huán)求1~100的和。4.4.4循環(huán)結(jié)構(gòu)語句的使用
4.4任務(wù)實(shí)施在GNOME操作界面的桌面單擊“活動”,在彈出的圖標(biāo)中選擇“終端”選項(xiàng),打開Shell窗口,如圖4-2所示。STEP011)利用vi編輯器編輯腳本文件test8.sh,操作方法如下:[root@tianyitest]#vitest8.sh2)在test8.sh文件中輸入以下內(nèi)容:#!/bin/bashtotal=0num=0while((num<=100))dototal=`expr$total+$num`num=`expr$num+1`doneecho"Theresultis$total"STEP023)輸入完成后保存退出,再給腳本添加執(zhí)行權(quán)限,操作方法如下:[root@tianyitest]#chmodu+xtest8.sh4)再執(zhí)行test8.sh腳本,執(zhí)行后的結(jié)果如下:[root@tianyitest]#./test8.shTheresultis5050
4.4任務(wù)實(shí)施4.4.5條件結(jié)構(gòu)語句的使用1.if-then-else語句的使用當(dāng)需要程序判斷一個(gè)條件是真還是假時(shí),可以使用if語句。if語句告訴程序:“如果條件為真,則執(zhí)行這些命令,否則跳過這些指令?!眎f條件語句的一般格式如下:
4.4任務(wù)實(shí)施教師演示學(xué)生模仿任務(wù)4-10編寫一個(gè)Shell程序test9.sh,要求用戶輸入一個(gè)數(shù)字。如果該數(shù)字小于等于5,則顯示消息“thenumber<=5”;如果該數(shù)字在5~10之間,則顯示消息“thenumberisbetween5and10”;如果該數(shù)大于等于10,則顯示消息“thenumber>=10”。4.4.4循環(huán)結(jié)構(gòu)語句的使用
4.4任務(wù)實(shí)施在GNOME操作界面的桌面單擊“活動”,在彈出的圖標(biāo)中選擇“終端”選項(xiàng),打開Shell窗口,如圖4-2所示。STEP011)利用vi編輯器編輯腳本文件test9.sh,操作方法如下:[root@tianyitest]#vitest9.sh2)在test9.sh文件中輸入以下內(nèi)容:#!/bin/bashread-p'Inpuanumber:'numif[$num-lt5];thenecho'Thenumber<=5'elif[$num-ge5-a$num-lt10];thenecho'Thenumberisbetween5and10'elseecho'Thenumber>=10'fiSTEP023)輸入完成后保存退出,再給腳本添加執(zhí)行權(quán)限,操作方法如下:[root@tianyitest]#chmodu+xtest9.sh4)再執(zhí)行test9.sh腳本,執(zhí)行后的結(jié)果如下:[root@TianYitest]#./test9.shInpuanumber:4Thenumber<=5[root@TianYitest]#./test9.shInpuanumber:8Thenumberisbetween5and10
4.4任務(wù)實(shí)施4.4.5條件結(jié)構(gòu)語句的使用2.case語句的使用假設(shè)要設(shè)計(jì)這樣一個(gè)程序,對不同年齡的用戶顯示不同的信息。當(dāng)然可以使用if語句來設(shè)計(jì)這樣的程序,不過這會很難讓人看懂。如果想獲得同樣的結(jié)果又不想太復(fù)雜,可以使用case語句。case…esac根據(jù)變量的值來執(zhí)行一組特定指令,常常用來替代if語句,case語句的一般格式為如下::
4.4任務(wù)實(shí)施教師演示學(xué)生模仿任務(wù)4-11編寫一個(gè)Shell程序test10.sh,根據(jù)登錄用戶的不同,輸出不同的反饋結(jié)果。4.4.4循環(huán)結(jié)構(gòu)語句的使用
4.4任務(wù)實(shí)施在GNOME操作界面的桌面單擊“活動”,在彈出的圖標(biāo)中選擇“終端”選項(xiàng),打開Shell窗口,如圖4-2所示。STEP011)利用vi編輯器編輯腳本文件test10.sh,操作方法如下:[root@tianyitest]#vitest10.sh2)在test10.sh文件中輸入以下內(nèi)容:#!/bin/shcase$USERinbeichen)echo"Youarebeichen!";;liangnian)echo"Youareliangnian";//注意這里只有一個(gè)分號
echo"Welcome!";;//這里才是兩個(gè)分號root)echo"Youareroot!";echo"Welcome!";;*)echo
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 關(guān)于推進(jìn)項(xiàng)目進(jìn)度的工作簡報(bào)
- 年度財(cái)務(wù)報(bào)表及審計(jì)結(jié)果
- 河南省駐馬店市部分學(xué)校2024-2025學(xué)年高三下學(xué)期3月月考地理試題(含答案)
- 基于區(qū)塊鏈技術(shù)的農(nóng)業(yè)溯源體系構(gòu)建方案
- 服裝設(shè)計(jì)與制造業(yè)務(wù)外包合作協(xié)議
- 個(gè)性化培訓(xùn)計(jì)劃實(shí)施效果分析表
- 網(wǎng)絡(luò)優(yōu)化服務(wù)升級合作協(xié)議
- 汽車采購銷售合同書及保修條款
- 智能醫(yī)療項(xiàng)目合作協(xié)議
- 企業(yè)危機(jī)管理機(jī)制構(gòu)建與運(yùn)行
- 駕駛員的責(zé)任和義務(wù)
- 預(yù)防艾梅乙母嬰傳播課件
- 寶寶雙排牙介紹演示培訓(xùn)課件
- DB3402-T 59-2023 露天礦山無人駕駛礦車作業(yè)通用要求
- 2022中國腦性癱瘓康復(fù)指南(第一章)
- 糧油倉儲企業(yè)一規(guī)定兩守則試題(新改版附答案)
- 肛腸外科運(yùn)用PDCA循環(huán)降低住院腸造口并發(fā)癥發(fā)生率品管圈QCC持續(xù)質(zhì)量改進(jìn)成果匯報(bào)
- GB/T 15558.5-2023燃?xì)庥寐竦鼐垡蚁?PE)管道系統(tǒng)第5部分:系統(tǒng)適用性
- 區(qū)塊鏈技術(shù)在政府?dāng)?shù)字化轉(zhuǎn)型中審計(jì)項(xiàng)目的應(yīng)用研究
- 拼多多民事起訴狀模板
- 廠房租賃合同糾紛起訴狀
評論
0/150
提交評論