(完整版)Linux下Shell編程_第1頁
(完整版)Linux下Shell編程_第2頁
已閱讀5頁,還剩19頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、Linux下Shell編程本文內(nèi)容Shell 命令行的運行編寫、修改權(quán)限和執(zhí)行 shel1 程序的步驟在 shell 程序中使用參數(shù)和變量表達式比較、循壞結(jié)構(gòu)語句和條件結(jié)構(gòu)語句在 shell 程序中使用函數(shù)和調(diào)用其他 shell 程序一.Shell 命令行書寫規(guī)則學(xué)習(xí)目標丄 Shell 命令行的書寫規(guī)則對 shell 命令行基本功能的理解有助于編寫更好的 shell 程序, 在執(zhí)行 shell 命令時多個命令可以在一個命令行上運行,但此時要使用分號(:)分隔命令,例如:rootlocalhost:root#Isa*-長 shell 命令行可以使用反斜線字符()在命令行上擴充,例如:rootlo

2、calhost:root#echouthisislongcommandvThisislongcommand注意:“”符號是自動產(chǎn)生的,而不是輸入的。學(xué)習(xí)目標4-編寫 shell 程序4執(zhí)行 shell 程序Shell 程序有很多類似 C 語言和其他程序設(shè)計語言的特征, 但是又沒有程序語言那樣的復(fù)雜。 Shell程序是指放在一個文件中的一系列 Linux 命令和實用程序。在執(zhí)行的時候,通過 Linux 操作系統(tǒng)一個接一個地解釋和執(zhí)行每條命令。首先,來編寫第一個 shell 程序,從中學(xué)習(xí) shell 程序的編寫、修改權(quán)限、執(zhí)行過程。(-)編輯shell程摩編輯一個內(nèi)容如下的源程序,保存文件名為

3、date,可將其存放在目錄/binrootlocalhostbin#vidate#!/bin/shechoMr.$USER,Todayis:”echo&dateechoWishyoualuckyday!編寫/修改權(quán)限及執(zhí)行 shell 程序的步驟注意:#!/bin/sh 通知采用 Bash 解釋。如果在 echo 語句中執(zhí)行 shell 命令 date,則需要在 date 命令前加符號“&”,其中%B%d%A 為輸入格式控制符。匚)建立可執(zhí)行程序編輯完該文件之后不能立即執(zhí)行該文件,需給文件設(shè)置可執(zhí)行程序權(quán)限。使用如下命令。rootlocalhostbin#chmod+xdate

4、(三)執(zhí)行shell程摩執(zhí)行 shell 程序有下面三種方法:方法一:rootlocalhostbin#./dateMr.root,Todayis:二月 06 星期二Wishyoualuckyday!方法二:另一種執(zhí)行 date 的方法就是把它作為一個參數(shù)傳遞給 shell 命令:rootlocalhostbin#BashdateMr.root,Todayis:二月 06 星期二Wishyoualuckyday!方法:為了在任何目錄都可以編譯和執(zhí)行 shell 所編寫的程序,即把/bin 的這個目錄添加到整個環(huán)境變量中。具體操作如下:rootlocalhostbinSexportPATH 二/

5、bin:$PATHrootlocalhostbin#dateMr.root,Todayis:二月 06 星期二Wishyoualuckyday!實停!I1:編寫一個 shell 程序 mkf,此程序的功能是:顯示 root 下的文件信息,然后建立一個 kk 的文件夾,在此文件夾下建立一個文件夾 aa,修改此文件的權(quán)限為可執(zhí)行。分析:此 shell 程序中需要依次執(zhí)行下列命令為:進入:root 目錄:cd/root顯示 root 目錄卜的文件信息:Is-1新建文件夾 kk:mkdirkk進入 root/kk 目錄:cdkk新建一個文件 aa:viaa#編輯完成后需手工保存修改 aa 文件的權(quán)限為

6、口 J 執(zhí)行:chmod+xaa回至 Ijroot 目錄:cd/root因此該 shell 程序只是以上命令的順序集合,假定程序名為 mkf_rootlocalhostbin#testlthisisatestprogram/傳遞 5 個參數(shù)Programnameis/bin/testl/給出程序的完整路徑和名字Lrootlocalhostroot#vimkfcd/rootIs-1mkdirkkcdkkviaachmod+xaacd/root三.在 shell 程序中使用的參數(shù)學(xué)習(xí)目標丄位置參數(shù)丄內(nèi)部參數(shù)如同 Is 命令可以接受目錄等作為它的參數(shù)一樣,在 shell 編程時同樣可以使用參數(shù)。Sh

7、ell 程序中的參數(shù)分為位置參數(shù)和內(nèi)部參數(shù)等。(-)鯉參數(shù)由系統(tǒng)提供的參數(shù)稱為位置參數(shù)。位置參數(shù)的值可以用$N 得到,N 是一個數(shù)字,如果為 1,即$1。類似 C 語言中數(shù)組,Linux 會把輸入的命令字符串分段并給每段進行標號,標號從 0 開始。第 0 號為程序名字,從 1 開始就表示傳送給程序的參數(shù)。如 SO 表示程序的名字,$1 表示傳遞給程序的第一個參數(shù),以此類推。(二)內(nèi)部參數(shù)上述過程中的 SO 是一個內(nèi)部變量,它是必須的,而$1 則可有可無,最常的內(nèi)部變量有$0、$#、$?、$*、,它們的含義如下。$0:命令含命令所在的路徑。$#:傳遞給程序的總的參數(shù)數(shù)目。$?:shell 程序在

8、 shell 中退出的情況,正常退出返回 0,反之為非 0 值。$*:傳遞給程序的所有參數(shù)組的字符串。實例I2:編寫一個 shell 程序,用于描述 shell 程序中的位置參數(shù)為:S0、$#、$?、$*,程序名為 testl,代碼如下:.rootlocalhostbin#vitestl#!/bin/shechouProgramnameisSO”;echouTherearetotallyS#parameterspassedtothisprogramn;echo“Thelastis$?”;echoTheparameterareS*;執(zhí)行后的結(jié)果如下:Therearetotally5paramet

9、erspassedtothisprogram/參數(shù)白勺總數(shù)Thelastis0Theprarametersarethisisatestprogram/返回由參數(shù)組成的字符串注意命令不計算在參數(shù)內(nèi)。實停3:利用內(nèi)部變量和位置參數(shù)編寫一個名為 test2 的簡單刪除程序,如刪除的文件名為 a,則在終端中輸入的命令為:testa分析:除命令外至少還有一個位置參數(shù),即$#不能為 0,刪除不能為$1,程序設(shè)計過程如下。(1)用 vi 編輯程序.rootlocalhostbin#vitest2#!/bin/shiftest$#eq0thenechouPleasespecifyafile!nelsegzip

10、SI現(xiàn)對文件進行壓縮mvSl.gz$H0ME/dustbin/移動到回收站echoFileSIisdeleted!wfifi(2)設(shè)置權(quán)限.rootlocalhostbin#chmod+xtest2(3)運行rootlocalhostbin#test2a(如果 a 文件在 bin 目錄卜存在)Fileaisdeleted!學(xué)習(xí)目標丄變量的賦值*變量的訪問*變量的輸入!1!在 shell 程序中的使用變量變量的賦值在 shell 編程中,所有的變量名都由字符串組成,并且不需要對變量進行聲明。要賦值給一個變量,其格式如下:變量名二值注意:等號(二)前后沒有空格例如:x=6a 二Howareyoun

11、表示把 6 賦值給變量 x,字符串“Howareyou”賦值給變量 a。(二)訪問變量值如果要訪問變量值,可以在變量前面加一個美元符號例如:Ais:helloworld一個變量給另一個變量賦值可以寫成:變量 2 二$變量 1例如:x=$ii+可以寫成:i=$i+l(=)鍵盤讀入變量值在 shell 程序設(shè)計中,變量的值可以作為字符串從鍵盤讀入,其格式為:read 變量例如:rootlocalhostbin#readstrread 為讀入命令,它表示從鍵盤讀入字符串到 str。實停!I4:編寫一個 shell 程序 test3,程序執(zhí)行時從鍵盤讀入一個目錄名,然后顯示這個目錄下所有文件的信息。分

12、析:存放目錄的變量為 DIRECTORY,其讀入語句為:readDIRECTORY顯示文件的信息命令為:Is-arootlocalhostbin#vitest3#!/bin/shechoupleaseinputnameofdirectoryreadDIRECTORYcd$DIRECTORYIs-1(2) 設(shè)置權(quán)限r(nóng)ootlocalhostbin#chmod+xtest3(3) 執(zhí)行rootlocalhostbin#/test3注意:輸入路徑時需實年U5:運行程序 test4,從鍵盤讀入 x,y 的值,然后做加法運算,最后輸出結(jié)果。(1)用 vi 編輯程序Lrootlocalhostbin#vi

13、test4#!/bin/shechopleaseinputxyreadx,yz 二expr$x+$y、echouThesumis$z(2)設(shè)置權(quán)限Lrootlocalhostbin#chmod+xtestd(3)執(zhí)行Lrootlocalhostbin#/testd45784578Thesumis123注意:表達式 total 二expr$total+$num及 num 二exprSnum+1中的符號”為鍵盤左上角的鍵。五、表達式的比較學(xué)習(xí)目標丄字符串操作符丄邏輯運行符丄用 test 比較的運算符丄數(shù)字比較符丄文件操作符在 shell 程序中,通常使用表達式比較來完成邏輯任務(wù)。表達式所代表的操作

14、符有字符操作符、數(shù)字操作符、邏輯操作符、以及文件操作符。其中文件操作符是一種 shell 所獨待的操作符。因為 shell 里的變量都是字符串,為了達到對文件進行操作的目的,于是才提供了文件操作符。(-)宇符串比較作用:測試字符串是否相等、長度是否為零,字符串是否為 NULL。常用的字符串操作符如表 1 所示。表 1字符串操作符含義及返回值二比較兩個字符串是否相同,相同則為“真”!二比較兩個字符串是否不相同,不同則為“真”比較兩個字符串長度是否大于零,若大于零則為“真”_z比較兩個字符串長度是否等于零,若等于零則為“真”實停!I6:從鍵盤輸入兩個字符串,判斷這兩個字符串是否相等,如相等輸出。(

15、1)用 vi 編輯程序rootlocalhostbin#vitest5#!/bin/Bashreadarlreadar2“$arl”二”$ar2”Echo$?#?保存前一個命令的返回碼(2)設(shè)置權(quán)限r(nóng)ootlocalhostbin#chmod+xtest5(3)執(zhí)行rootlocalhostbin#/test5AaaBbb1注意:“”后面和前面及等號“二”的前后都應(yīng)有一個空格:注意這里是程序的退出情況,如果 arl 和ar2 的字符串是不想等的非正常退出,輸出結(jié)果為 1。實年!I7:比較字符串長度是否人于零(1)用 vi 編輯程序Lrootlocalhostbin#vitest6#!/bin/

16、Bashreadarr“Ln$arvechoS?/保存前一個命令的返回碼(2)設(shè)置權(quán)限Lrootlocalhostbin#chmod+xtest6(3)執(zhí)行Lrootlocalhostbin#/test60汪息:運行結(jié)呆 1 表示 ar 的小于等于零,0 表示 ar 的長度人于零。(二)數(shù)宇比較在 BashShell 編程中的關(guān)系運算有別于其他編程語言,用表 2 中的運算符用 test 語句表示大小的比較。表2用test比較的運行符運行符號含義eq相等ge大于等于-le小于等于ne不等于-gt大于-It小于實停g8:比較兩個數(shù)字是否相等(1)用 vi 編輯程序Lrootlocalhostbin

17、#vitest7#!/bin/Bashreadx,yiftest$x-eqSythen(2)設(shè)置權(quán)限Lrootlocalhostbin#chmod+xtest?(3)執(zhí)行Lrootlocalhostbin#/test7501005010050!=10050!=100Lrootlocalhostbin#/test7150150150=150(三)邏輯操作在 shell 程序設(shè)計中的邏輯運算符如表 3 所示。表3shell中的邏輯運算符運算符號含義1反:與一個邏輯值相反的邏輯值a與(and):兩個邏輯值為“是”返回值為“是”,反之為“否”_o或(or):兩個邏輯值有一個為“是”,返回值就是“是”實

18、停!I9:分別給兩個字符變量賦值,一個變量賦予一定的值,別一個變量為空,求兩者的與、或操作。(1)用 vi 編輯程序Lrootlocalhostbin#vitest8(2)設(shè)置權(quán)限Lrootlocalhostbin#chmod+xtest8(3)執(zhí)行Lrootlocalhostbin#/test810文件操作文件測試操作表達式通常是為了測試文件的信息,一般由腳本來決定文件是否應(yīng)該備份、復(fù)制或刪除。由于 test 關(guān)于文件的操作符有很多,在表 4 中只列舉一些常用的操作符。表4文件測試操作符運算含義-d對彖存在且為目錄返回值為“是”-f對彖存在且為文件返回值為“是”-L對彖存在且為符號連接返回值

19、為“是”r對彖存在且為讀則返回值為“是”_s對彖存在且長度非零則返回值為“是”W對彖存在且且可寫則返回值為“是”X對彖存在且且可執(zhí)行則返回值為“是”實例10:判斷 zb 目錄是否存在于/root 下。(1)用 vi 編輯程序Lrootlocalhostbin#vitest9#!/bin/Bash-d/root/zbechoS?#保存前一個命令的返回碼(2)設(shè)置權(quán)限Lrootlocalhostbin#chmod+xtest9(3)執(zhí)行Lrootlocalhostbin#/test9(4)在/root 添加 zb 目錄 Lrootlocalhostbin#mkdirzb(5)執(zhí)行Lrootloca

20、lhostbin#/test9汪息:運行結(jié)呆是返回參數(shù)“$?S 結(jié)果 1 表示判斷的目錄不存在,0 表示判斷的目錄不存在。實年g11:編寫一個 shell 程序 testio,輸入一個字符串,如果是目錄,則顯示目錄下的信息,如為文件顯示文件的內(nèi)容。(1)用 vi 編輯程序.rootlocalhostbin#vitestlO#!/bin/BashechouPleaseEnterthedirectorynameorfilenameMreadDORFif-d$DORFthenIs$DORFelif-fSDORFthencat$DORFelseechouinputerror!fifi(2)設(shè)置權(quán)限.r

21、ootlocalhostbin#chmod+xtest10(3)執(zhí)行.rootlocalhostbin#./test10六.循環(huán)結(jié)構(gòu)語句學(xué)習(xí)目標丄 Shell 的循壞語句Shell 常見的循壞語句有 for 循壞、while 循壞語句和 until 循壞。()foi循環(huán)語法:for 變量 in 列表dodo操作done汪息:變量要在循壞內(nèi)部用來指列表當中的對象。列表是在 for 循環(huán)內(nèi)部要操作的對象,可以是字符串也可以是文件,如果是文件則為文件名。實年U12:在列表中的值:a,b,c,e,I,2,4,6,8 用循環(huán)的方式把字符與數(shù)字分成兩輸出。(1)用 gedit 編輯腳本程序 testllL

22、rootlocalhostbin#gedittestll#!/bin/BashforIina,b,c,e,I2,4,6,8dodoechoSidone(2)設(shè)置權(quán)限Lrootlocalhostbin#chmod+xtest11(3)執(zhí)行Lrootlocalhostbin#/testlla,b,c,e,i2,4,6,8注意:在循環(huán)列表中的空格可表示換行。實停!113:刪除垃圾箱中的所有文件。分析:在本機中,垃圾箱的位置是在$H0ME/.Trash 中,因而是在刪除 SHOME/.Trash 列表當中的所有文件,程序腳本如下。(1)用 gedit 編輯腳本程序 testl2rootlocalhos

23、tbin#gedittest12#!/bin/BashforIin$H0ME/.Trash/*dodormSiechoIhasbeendeleted!vdone(2)設(shè)置權(quán)限Lrootlocalhostbin#chmod+xtest12(3)執(zhí)行Lrootlocalhostbin#/testl2/root/ Trash/abchasbeendeleted!/root/ Trash/abc1hasbeendeleted!實年!J14:求從 i、ioo 的和。(1)用 gedit 編輯腳本程序 testl3Lrootlocalhostbin#gedittestl3#!/bin/Bashtotal=

24、0for(j=l;j=100;尹+);dodototal=exprStotal+$jdoneechouTheresuItis$totalM(2)設(shè)置權(quán)限Lrootlocalhostbin#chmod+xtestl3(3)執(zhí)行Lrootlocalhostbin#/test13TheresuItis5050汪息:for 語句中的雙括號不能省,最后的分號可有可無,表達式 total=expr$total+$j的加號兩邊的空格不能省,否則會成為字符串的連接。(二)While循環(huán)語法:While 表達式dodo操作done只要表達式為真,do 和 done 之間的操作就一直會進行。實例15:用 whil

25、e 循壞求 1、100 的和。(1)用 gedit 編輯腳本程序 testldLrootlocalhostbin#gedittestl4total=0num=0while(num=100);doLrootlocalhostbin#chmod+xtest14(3)執(zhí)行Lrootlocalhostbin#/test14TheresuItis5050(三)until循環(huán)語法:until 表達式dodo操作done重復(fù) do 和 done 之間的操作直到表達式成立為止。實例16:用 until 循壞求 1100 的和。(1)用 gedit 編輯腳本程序 testl5Lrootlocalhostbin#

26、gedittestl5total=0num=0unti1$sum-gt100dodototal=,exporStotal+$numnum 二expr$num+1doneechouTheresuItis$totalM(2)設(shè)置權(quán)限Lrootlocalhostbin#chmod+xtest15(3)執(zhí)行Lrootlocalhostbin#/testl5TheresuItis5050七、條件結(jié)構(gòu)語句學(xué)習(xí)目標丄 Shell 的條件結(jié)構(gòu)語句Shell 程序中的條件語句主要有 if 語句與 case 語句。(-)If語句語法:If 表達式 1then操作elif 表達式 2then操作elif 表達式 3

27、then操作else操作fiLinux 里的 if 的結(jié)束標志是將 if 反過來寫成 fi;而 elif 其實是 else 辻的縮寫。其中,elif 理論上可以有無限多個。實例17:用 for 循壞求 P100 的和。(1)用 gedit 編輯腳本程序 testl6Lrootlocalhostbin#gedittestl6for(j=0;j=10;j+)dodoif($j%2=l)thenechofifidone(2)設(shè)置權(quán)限Lrootlocalhostbin#chmod+xtest16(3)執(zhí)行Lrootlocalhostbin#/test1613579()case語句語法:case 的作用

28、就是當字符串與某個值相同是就執(zhí)行那個值后面的操作。如果同一個操作對于多個值,則使用“I”將各個值分開。在 case 的每一個操作的最后面都有兩個“;”分號是必需的。實年!|18:Linux 是一個多用戶操作系統(tǒng),編寫一程序根據(jù)不同的用戶登錄輸出不同的反饋結(jié)果。(1)用 vi 編輯腳本程序 testl?Lrootlocalhostbin#gedittestl7echo“Youareroot!n;echouWelcome!”;;/將兩命令寫在一行,用一個分號作為分隔符*)echoWhoareyou?$USER?;ease(2)設(shè)置權(quán)限Lrootlocalhostbin#chmod+xtest17(

29、3)執(zhí)行.rootlocalhostbin#/test17YouarerootWelcome!在 shell 腳本中使用函數(shù)學(xué)習(xí)目標丄 Shell 的函數(shù)caseSUSERinbeechen)echo“Youareliangnian;/注意這里只有一個分號echo44Welcome!”;/這里才是兩個分號root)Shell 程序也支持函數(shù)。函數(shù)能完成一特定的功能,可以重復(fù)調(diào)用這個函數(shù)。函數(shù)格式如下:函數(shù)名 O|函數(shù)體|函數(shù)調(diào)用方式為函數(shù)名參數(shù)列表實停!|19:編寫一函數(shù) add 求兩個數(shù)的和,這兩個數(shù)用位置參數(shù)傳入,最后輸出結(jié)果。(1)編輯代碼_rootlocalhostbin#geditt

30、est18#!/bin/shadd()Ia=$lb=$2z 二expr$a+SbechouThesumis$zIadd$1$2(2)設(shè)置權(quán)限.rootlocalhostbin#chmod+xtest18(3)執(zhí)行.rootlocalhostbin#./test181020Thesumis30汪息:函數(shù)定義完成后必須同時寫出函數(shù)的調(diào)用,然后對此文件進行權(quán)限設(shè)定,在執(zhí)行此文件。學(xué)習(xí)目標丄 Shell 腳本的調(diào)用在 shell 腳本的執(zhí)行過程中,shell 腳本支持調(diào)用另一個 shell 腳本,調(diào)用的格式為:程序名實例20:在 shell 腳本 testl9 中調(diào)用 test20o(1)調(diào)用 tes

31、t20#testl9 腳本#!/bin/shechoThemainnameis$0/test20echouThefirststringisSI”#test20 腳本#!/bin/shechouHowareyou$USER?”(2)設(shè)置權(quán)限Lrootlocalhostbin#chmod+xtest19Lrootlocalhostbin#chmod+xtest20(3)執(zhí)行Lrootlocalhostbin#,/test19abcl23Themainnameis /testl9Howareyouroot?thefirststringisabcl23注意:1)在 Linux 編輯中命令區(qū)分大小寫字符

32、。2)在 shell 語句中加入必要的注釋,以便以后查詢和維護,注釋以#開頭。3)對 shell 變量進行數(shù)字運算時,使用乘法符號時,要用轉(zhuǎn)義字符“”進行轉(zhuǎn)4) 由于 shell 對命令中多余的空格不進行任何處理, 因此程序員可以利用這一特性調(diào)整程序縮進,達到增強程序可讀性效果。5)在對函數(shù)命名時最好能使用有含義且能容易理解的名字,即使函數(shù)名能夠比較準確地表達函數(shù)在 shell 腳本中調(diào)用其他腳本所完成的任務(wù)。同時建議對于較人的程序要建立函數(shù)名和變量命名對照表。十.本文小結(jié)本文講解了 LinuxFshell 腳本的定義和相關(guān) shell 腳本編寫的基礎(chǔ),這些基礎(chǔ)知識是學(xué)習(xí) shell腳本編程的

33、關(guān)鍵。接著講解了 shell 腳本的執(zhí)行方式和 shell 腳本的常見流程控制,為 shell 腳本的編程做了準備。課后習(xí)題1.選擇題(1)下列說法中正確的是()。A.安裝軟件包 fctix-3.4.tar.bz2,要按順序使用./configure;make;makeinstall;tar命令B.掛載 U 盤,mount/dev/sda/mnt/u-oiocharset=gb2312C.顯示變量 PSI 的值用命令 echoPSID.用命令./abc 與 shabc 執(zhí)行 Shell 腳本 abc,所得的結(jié)果并不相同(2)一個 BashShell 腳本的第一行是什么()。A.#!/bin/B

34、ashB.#/bin/BashC.#/bin/cshD./bin/Bash(3)在 Shell 腳本中,用來讀取文件內(nèi)各個域的內(nèi)容并將其賦值給 Shell 變量的命令是()。A.foldB joinC trD read(4)下列變量名中有效的 Shell 變量名是()。A.-2-timeB._2$3C.trust_no_lD.2004file(5)下列對 Shell 變量 FRUIT 操作,正確的是()。A.為變量賦值:SFRUIT 二 appleB.顯不變量的值:fruit 二 appleC.顯示變量的值:echo$FRUITD.判斷變量是否有值:-f“SFRUIT”(6)在 Fedora1

35、2 系統(tǒng)中,卞列關(guān)于 Shell 腳本程序說法不正確的是()。A.Shell 腳本程序以文本的形式存儲B.Shell 腳本程序在運行前需要進行編譯C.Shell 腳本程序由解釋程序解釋執(zhí)行D.Shell 腳本程序主要用于系統(tǒng)管理和文件操作,它能夠方便自如地處理人量重復(fù)性的系統(tǒng)工作(7)在 Shell 腳本編程中關(guān)于$2 的描述正確的是()。A.程序后攜帶了兩個位置參數(shù)B.宏替換C.程序后面攜帶的第二個位置參數(shù)D.攜帶位置參數(shù)的個數(shù)E.用$2 引用第二個位置參數(shù)(8)在 Fedora12 系統(tǒng)中,“run.sh是 Shell 執(zhí)行腳本,在執(zhí)行./run.shfilelfile2f 訂 e3 的命

36、令的過程中,變量$1 的值為()。A.run.shB.filelC.file2D.file32.填空題(1)在 Shell 編程時,使用方括號表示測試條件的規(guī)則是。(2)編寫的 Shell 編譯運行前必須賦予該腳本文件權(quán)限。3.簡答題(1)用 Shell 編程,判斷一文件是不是字符設(shè)備文件,如果是將其拷貝到/dev 目錄下。(2)在根目錄卜有四個文件 ml.txt,m2,txt,m3,txt,m4.txt,用 Shell 編程,實現(xiàn)自動創(chuàng)建ml,m2,m3,m4 四個目錄,并將 ml.txt,m2,txt,m3,txt,ml.txt 四個文件分別拷貝到各自相應(yīng)的目錄下。(3)某系統(tǒng)管理員需要每

37、做一定的重復(fù)工作,請按照下列要求,編制一個解決方案:在下午 4:50 刪除/abc 目錄下的全部子目錄和全部文件;從早 8: 00卞午 6: 00 每小時讀取/xyz 目錄卞 xl 文件中每行第一個域的全部數(shù)據(jù)加入到/backup 目錄下的 bakOl.txt 文件內(nèi);每逢星期一下午 5:50 將/data 目錄下的所有目錄和文件歸檔并壓縮為文件:backup,tar.gz;在下午 5:55 將 IDE 接口的 CD-ROM 卸載(假設(shè):CD-ROM 的設(shè)備名為 hdc);在早晨 8:00 前開機后啟動。(4)請用 Shell 編程來實現(xiàn):當輸入不同的選擇時,執(zhí)行不同的操作,如:輸入 star

38、t 開始啟動應(yīng)用程序 myfiles,輸入 stop 時,關(guān)閉 myfiles,輸入 status 時,查看 myfiles 進程,否則執(zhí)行*)顯示“EXIT!”并退出程序。(5)編寫一個 Shell 程序,此程序的功能是:顯示 root 下的文件信息,然后建立一個 abc 的文件夾,在此文件夾下建立一個文件 k.c,修改此文件的權(quán)限為可執(zhí)行。(6)編寫一個 Shell 程序,掛載 U 盤,在 U 盤中根目錄下所有.c 文件拷貝到當前目錄,然后卸載 U 盤。(7)編寫一個 Shell 程序,程序執(zhí)行時從鍵盤讀入一個文件名,然后創(chuàng)建這個文件。(8)編寫一個 Shell 程序,鍵盤輸入兩個字符串,

39、比較兩個字符串是否相等。(9)編寫三個 Shell 程序,分別用 for、while、與 until 求從 2+4+100 的和。(10)編寫一個 Shell 程序,鍵盤輸入兩個數(shù)及+、-、*、與/中的任一運算符,計算這兩個數(shù)的運算結(jié)果。(11)編寫兩個 Shell 程序 kk 及 aa,在 kk 中輸入兩個數(shù),調(diào)用 aa 計算計算這兩個數(shù)之間奇數(shù)的和。(12)編寫 Shell 程序,可以掛載 U 盤,也可掛載 Windows 硬盤的分區(qū),并可對文件進行操作。(13)編寫 4 個函數(shù)分別進行算術(shù)運算+、-、*、/,并編寫一個菜單,實現(xiàn)運算命令。課程實訓(xùn)實訓(xùn)內(nèi)容:編寫一個 Shell 程序,呈現(xiàn)一個菜單,有 0-5 共 6 個命令選項,1 為掛載 U 盤,2 為卸載 U 盤,3 為顯示 U 盤的信息,4 把硬盤中的文件拷貝到 U 盤,5 把 U 盤中的文件拷貝到硬盤中,選 0 為退出。程序分析:把此程序分成題目中要求的 6 人功能模塊,

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論