Shell腳本編程詳解-免費(fèi)共享_第1頁
Shell腳本編程詳解-免費(fèi)共享_第2頁
Shell腳本編程詳解-免費(fèi)共享_第3頁
Shell腳本編程詳解-免費(fèi)共享_第4頁
Shell腳本編程詳解-免費(fèi)共享_第5頁
已閱讀5頁,還剩37頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第12章 Shell 腳本編程 Shell 命令行的運(yùn)行 編寫、修改權(quán)限和執(zhí)行Shell 程序的步驟 在Shell 程序中使用參數(shù)和變量 表達(dá)式比較、循環(huán)結(jié)構(gòu)語句和條件結(jié)構(gòu)語句 在Shell 程序中使用函數(shù)和調(diào)用其他Shell 程序12-1 Shell 命令行書寫規(guī)則 Shell 命令行的書寫規(guī)則對Shell 命令行基本功能的理解有助于編寫更好的Shell 程序,在執(zhí)行Shell 命令時多個命令可以在一個命令行上運(yùn)行,但此時要使用分號(;)分隔命令,例如:rootlocalhost root# ls a* -l;free;df長Shell 命令行可以使用反斜線字符()在命令行上擴(kuò)充,例如: r

2、ootlocalhost root# echo “this is >long command”This is long command注意:“>”符號是自動產(chǎn)生的,而不是輸入的。 12-2 編寫/修改權(quán)限及執(zhí)行Shell 程序的步驟 編寫Shell 程序 執(zhí)行Shell 程序Shell 程序有很多類似C 語言和其他程序設(shè)計(jì)語言的特征,但是又沒有程序語言那樣復(fù)雜。Shell 程序是指放在一個文件中的一系列Linux 命令和實(shí)用程序。在執(zhí)行的時候,通過Linux 操作系統(tǒng)一個接一個地解釋和執(zhí)行每條命令。首先,來編寫第一個Shell 程序,從中學(xué)習(xí)Shell 程序的編寫、修改權(quán)限、執(zhí)行過

3、程。12-2-1 編輯Shell 程序編輯一個內(nèi)容如下的源程序,保存文件名為date ,可將其存放在目錄/bin下。 rootlocalhost bin#vi date #! /bin/shecho “Mr.$USER,Today is:”echo &date “+%B%d%A”echo “Wish you a lucky day !”注意:#! /bin/sh通知采用Bash 解釋。如果在echo 語句中執(zhí)行Shell 命令date ,則需要在date 命令前加符號“&”,其中%B%d%A為輸入格式控制符。12-2-2 建立可執(zhí)行程序編輯完該文件之后不能立即執(zhí)行該文件,需給文

4、件設(shè)置可執(zhí)行程序權(quán)限。使用如下命令。rootlocalhost bin#chmod +x date12-2-3 執(zhí)行Shell 程序執(zhí)行Shell 程序有下面三種方法:方法一:rootlocalhost bin#./ dateMr.root,Today is:二月 06 星期二Wish you a lucky day !方法二:另一種執(zhí)行date 的方法就是把它作為一個參數(shù)傳遞給Shell 命令:rootlocalhost bin# Bash dateMr.root,Today is:二月 06 星期二Wish you a lucky day !方法三:為了在任何目錄都可以編譯和執(zhí)行Shell

5、 所編寫的程序,即把/bin的這個目錄添加到整個環(huán)境變量中。 具體操作如下:rootlocalhost root#export PATH=/bin:$PATHrootlocalhost bin# dateMr.root,Today is:二月 06 星期二Wish you a lucky day ! 實(shí)例 12-1:編寫一個Shell 程序mkf ,此程序的功能是:顯示root 下的文件信息,然后建立一個kk 的文件夾,在此文件夾下建立一個文件aa, 修改此文件的權(quán)限為可執(zhí)行。分析:此Shell 程序中需要依次執(zhí)行下列命令為: 進(jìn)入root 目錄:cd /root顯示root 目錄下的文件信息

6、:ls l新建文件夾 kk: mkdir kk進(jìn)入root/kk目錄:cd kk新建一個文件aa: vi aa #編輯完成后需手工保存修改aa 文件的權(quán)限為可執(zhí)行:chmod +x aa回到root 目錄:cd /root因此該Shell 程序只是以上命令的順序集合,假定程序名為mkfrootlocalhost root#vi mkfcd /rootls lmkdir kkcd kkvi aachmod +x aacd /root12-3 在Shell 程序中使用的參數(shù) 位置參數(shù) 內(nèi)部參數(shù)如同ls 命令可以接受目錄等作為它的參數(shù)一樣,在Shell 編程時同樣可以使用參數(shù)。Shell 程序中的參

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

8、,正常退出返回0,反之為非0值。 $*:傳遞給程序的所有參數(shù)組成的字符串。 實(shí)例 12-2:編寫一個Shell 程序,用于描述Shell 程序中的位置參數(shù)為:$0、$#、$?、$*,程序名為test1,代碼如下: rootlocalhost bin#vi test1 #! /bin/shecho “Program name is $0” ;echo “There are totally $# parameters passed to this program”; echo “The last is $?”;echo “The parameter are $*”;執(zhí)行后的結(jié)果如下:rootloc

9、alhost bin# test1 this is a test program /傳遞5個參數(shù)Program name is /bin/test1 /給出程序的完整路徑和名字 There are totally 5 parameters passed to this program /參數(shù)的總數(shù) The last is 0 /程序執(zhí)行效果The parameters are this is a test program /返回由參數(shù)組成的字符串注意:命令不計(jì)算在參數(shù)內(nèi)。實(shí)例 12-3:利用內(nèi)部變量和位置參數(shù)編寫一個名為test2的簡單刪除程序,如刪除的文件名為a ,則在終端中輸入的命令為:t

10、est a分析:除命令外至少還有一個位置參數(shù),即$#不能為0,刪除不能為$1,程序設(shè)計(jì)過程如下。(1) 用vi 編輯程序rootlocalhost bin#vi test2#! /bin/shif test $# -eq 0thenecho “Please specify a file!”elsegzip $1 /現(xiàn)對文件進(jìn)行壓縮mv $1.gz $HOME/dustbin /移動到回收站echo “File $1 is deleted ! ”fi(2) 設(shè)置權(quán)限 rootlocalhost bin#chmod +x test2(3 運(yùn)行rootlocalhost bin# test2 a (

11、如果a 文件在bin 目錄下存在File a is deleted!12-4 在Shell 程序中的使用變量 變量的賦值 變量的訪問 變量的輸入12-4-1變量的賦值在Shell 編程中,所有的變量名都由字符串組成,并且不需要對變量進(jìn)行聲明。要賦值給變量名=值 注意:等號(=)前后沒有空格例如:x=6a=”How are you ”表示把6賦值給變量x ,字符串“How are you ”賦值給變量a 。 一個變量,其格式如下:12-4-2 訪問變量值如果要訪問變量值,可以在變量前面加一個美元符號“$”,例如:rootlocalhost bin#a=”How are you ”rootloca

12、lhost bin#echo “He juest said:$a”A is:hello world一個變量給另一個變量賦值可以寫成:變量2=$變量1例如:x=$ii+可以寫成:i=$i+112-4-3 鍵盤讀入變量值在Shell 程序設(shè)計(jì)中,變量的值可以作為字符串從鍵盤讀入,其格式為: read 變量例如:rootlocalhost bin#read strread 為讀入命令,它表示從鍵盤讀入字符串到str 。 實(shí)例 12-4:編寫一個Shell 程序test3,程序執(zhí)行時從鍵盤讀入一個目錄名,然后顯示這個目錄下所有文件的信息。分析:存放目錄的變量為DIRECTORY ,其讀入語句為:rea

13、d DIRECTORY顯示文件的信息命令為:ls a rootlocalhost bin#vi test3#! /bin/sh echo “please input name of directory” read DIRECTORYcd $DIRECTORYls l(2設(shè)置權(quán)限r(nóng)ootlocalhost bin#chmod +x test3(3執(zhí)行rootlocalhost bin#./test3注意:輸入路徑時需“/”實(shí)例 12-5:運(yùn)行程序test4,從鍵盤讀入x 、y 的值,然后做加法運(yùn)算,最后輸出結(jié)果。(1)用vi 編輯程序rootlocalhost bin#vi test4#! /b

14、in/shecho “please input x y”read x,yz=expr $x+$yecho “The sum is $z”(2)設(shè)置權(quán)限 rootlocalhost bin#chmod +x test4(3執(zhí)行rootlocalhost bin#./ test4 45 78The sum is 123注意:表達(dá)式total=expr $total +$num及num=expr $num +1中的符號“ ”為鍵盤左上角的“”鍵。12-5 表達(dá)式的比較 字符串操作符 邏輯運(yùn)算符 用test 比較的運(yùn)算符 數(shù)字比較符 文件操作符在Shell 程序中,通常使用表達(dá)式比較來完成邏輯任務(wù)。表

15、達(dá)式所代表的操作符有字符操作符、數(shù)字操作符、邏輯操作符、以及文件操作符。其中文件操作符是一種Shell 所獨(dú)特的操作符。因?yàn)镾hell 里的變量都是字符串,為了達(dá)到對文件進(jìn)行操作的目的,于是才提供了文件操作符。 12-5-1 字符串比較作用:測試字符串是否相等、長度是否為零,字符串是否為NULL 。常用的字符串操作符如表12-1所示. 。 表12-1 常用的字符串操作符 實(shí)例 12-6:從鍵盤輸入兩個字符串,判斷這兩個字符串是否相等,如相等輸出。(1)用vi 編輯程序 rootlocalhost bin#vi test5#! /bin/Bashread ar1 read ar2 “$ar1”

16、= “$ar2” echo $? #?保存前一個命令的返回碼(2)設(shè)置權(quán)限 rootlocalhost bin#chmod +x test5(3執(zhí)行rootlocalhost root#./ test5 aaabbb1注意: ”后面和”前面及等號“=“的前后都應(yīng)有一個空格;注意這里是程序的退出情況,如果ar1和ar2的字符串是不想等的非正常退出,輸出結(jié)果為1。實(shí)例 12-7: 比較字符串長度是否大于零(1)用vi 編輯程序rootlocalhost bin#vi test6 #! /bin/Bashread ar -n “$ar” echo $? /保存前一個命令的返回碼 ( 2)設(shè)置權(quán)限r(nóng)o

17、otlocalhost bin#chmod +x test6(3)執(zhí)行rootlocalhost bin#./ test6注意:運(yùn)行結(jié)果1表示ar 的小于等于零,0表示ar 的長度大于零。12-5-2 數(shù)字比較在Bash Shell編程中的關(guān)系運(yùn)算有別于其他編程語言,用表12-2中的運(yùn)算符用test 語句表示大小的比較。表12-2 用test 比較的運(yùn)算符 實(shí)例 12-8:比較兩個數(shù)字是否相等(1)用vi 編輯程序 rootlocalhost bin#vi test7#! /bin/Bashread x,yif test $x eq $ythenecho “$x=$y”elseecho “$x

18、!=$y”fi(2)設(shè)置權(quán)限r(nóng)ootlocalhost bin#chmod +x test7(3)執(zhí)行rootlocalhost bin#./ test750 10050!=100rootlocalhost bin#./ test7 150 150 150= =15012-5-3 邏輯操作在Shell 程序設(shè)計(jì)中的邏輯運(yùn)算符如表12-3所示。 12-3 Shell中的邏輯運(yùn)算符實(shí)例 12-9:分別給兩個字符變量賦值,一個變量賦予一定的值,另一個變量為空,求兩者的與、或操作。(1)用vi 編輯程序 rootlocalhost bin#vi test8 #! /bin/Bashpart1 =”11

19、11”part2 =” ” #part2為空 “$ part1” a “$ part2”echo $? #保存前一個命令的返回碼 “$ part1” o “$ part2”echo $?(2)設(shè)置權(quán)限r(nóng)ootlocalhost bin#chmod +x test8(3)執(zhí)行rootlocalhost bin#./ test8112-5-4 文件操作文件測試操作表達(dá)式通常是為了測試文件的信息,一般由腳本來決定文件是否應(yīng)該備份、復(fù)制或刪除。由于test 關(guān)于文件的操作符有很多,在表12-4中只列舉一些常用的操作符。表12-4 文件測試操作符 實(shí)例 12-10:判斷zb 目錄是否存在于/root下。

20、(1)用vi 編輯程序rootlocalhost bin#vi test9#! /bin/Bash -d /root/zb echo $? #保存前一個命令的返回碼(2)設(shè)置權(quán)限r(nóng)ootlocalhost bin#chmod +x test9(3執(zhí)行rootlocalhost bint#./ test9(4在/root添加zb 目錄rootlocalhost bin#mkdir zb(5執(zhí)行 rootlocalhost bin#./test9注意:運(yùn)行結(jié)果是返回參數(shù)“$?”,結(jié)果1表示判斷的目錄不存在,0 表示判斷的目錄不存在。實(shí)例 12-11:編寫一個Shell 程序test10,輸入一個字

21、符串,如果是目錄,則顯示目錄下的信息,如為文件顯示文件的內(nèi)容。(1)用vi 編輯程序 rootlocalhost bin#vi test10#! /bin/Bashecho “Please enter the directory name or file name”read DORFif -d $DORF thenls $DORFelif -f $DORF thencat $DORFelseecho “input error! ”fi(2)設(shè)置權(quán)限r(nóng)ootlocalhost bin#chmod +x test10(3)執(zhí)行rootlocalhost bin#./ test10 12-6 循環(huán)結(jié)

22、構(gòu)語句Shell 的循環(huán)語句Shell 常見的循環(huán)語句有for 循環(huán)、while 循環(huán)語句和until 循環(huán)。12-6-1 for循環(huán)語法:for 變量 in 列表do 操作done注意: 變量要在循環(huán)內(nèi)部用來指列表當(dāng)中的對象。列表是在for 循環(huán)的內(nèi)部要操作的對象,可以是字符串也可以是文件,如果是文件則為文件名。實(shí)例 12-12:在列表中的值:a,b,c,e,I,2,4,6,8用循環(huán)的方式把字符與數(shù)字分成兩行輸出。(1)用gedit 編輯腳本程序test11 rootlocalhost bin#gedit test11 #! /bin/Bashfor i in a,b,c,e,I 2,4,6

23、,8doecho $idone(2)設(shè)置權(quán)限 rootlocalhost bin#chmod +x test11(3)執(zhí)行 rootlocalhost bin#./ test11a,b,c,e,i2,4,6,8注意:在循環(huán)列表中的空格可表示換行。實(shí)例 12-13:刪除垃圾箱中的所有文件。分析:在本機(jī)中,垃圾箱的位置是在$HOME/.Trash中,因而是在刪除$HOME/.Trash列表當(dāng)中的所有文件,程序腳本如下。(1)用gedit 編輯腳本程序test12 rootlocalhost bin#gedit test12#! /bin/Bashfor i in $HOME/.Trash/*dor

24、m $ iecho “$ i has been deleted!”done(2)設(shè)置權(quán)限r(nóng)ootlocalhost bin#chmod +x test12 (3)執(zhí)行 rootlocalhost bin#./ test12/root/.Trash/abc has been deleted!/root/.Trash/abc1 has been deleted!實(shí)例 12-14:求從1100的和。(1)用gedit 編輯腳本程序test13 rootlocalhost bin#gedit test13#! /bin/Bashtotal =0 for(j=1;j<=100;j+;dototal

25、=expr $total + $jdone echo “The result is $total” (2)設(shè)置權(quán)限r(nóng)ootlocalhost bin#chmod +x test13(3)執(zhí)行rootlocalhost bin#./ test13The result is 5050注意:for 語句中的雙括號不能省,最后的分號可有可無,表達(dá)式total=expr $total + $j的加號兩邊的空格不能省,否則會成為字符串的連接。12-6-2 while 循環(huán)語法:while 表達(dá)式do操作done只要表達(dá)式為真,do 和done 之間的操作就一直會進(jìn)行。實(shí)例 12-15:用while 循環(huán)求

26、1100的和。(1)用gedit 編輯腳本程序test14rootlocalhost bin#gedit test13total =0num=0while(num<=100;dototal=expor $total +$ numdoneecho “The result is $total”(2)設(shè)置權(quán)限r(nóng)ootlocalhost bin#chmod +x test14(3執(zhí)行rootlocalhost bin#./ test14The result is 505012-6-3 until 循環(huán)語法: until 表達(dá)式do操作done重復(fù)do 和done 之間的操作直到表達(dá)式成立為止。實(shí)

27、例 12-16:用until 循環(huán)求1100的和。(1)用gedit 編輯腳本程序test15 rootlocalhost bin#gedit test15total =0num=0 until $sum gt 100dototal=expor $total +$ numnum=expr $num + 1doneecho “The result is $total”(2)設(shè)置權(quán)限r(nóng)ootlocalhost bin#chmod +x test15(3執(zhí)行rootlocalhost bin#./ test15The result is 505012-7 條件結(jié)構(gòu)語句 Shell 的條件結(jié)構(gòu)語句Sh

28、ell 程序中的條件語句主要有if 語句與case 語句。12-7-1 if語句語法: if 表達(dá)式1 then操作elif 表達(dá)式2 then操作elif 表達(dá)式3 then 操作else操作fiLinux 里的if 的結(jié)束標(biāo)志是將if 反過來寫成fi ;而elif 其實(shí)是else if的縮寫。其中,elif 理論上可以有無限多個。實(shí)例 12-17:用for 循環(huán)求1100的和。 (1)用gedit 編輯腳本程序test16rootlocalhost bin#gedit test16for(j=0;j<=10;j+do if($j%2=1thenecho “$j”fidone(2)設(shè)置

29、權(quán)限r(nóng)ootlocalhost bin#chmod +x test16(3)執(zhí)行rootlocalhost bin#./ test161357912-7-2 case語句語法: case 表達(dá)式 in值1|值2)操作; 值3|值4)操作;值5|值6)操作;*)操作;esaccase的作用就是當(dāng)字符串與某個值相同是就執(zhí)行那個值后面的操作。如果同一個操作對于多個值,則使用“|”將各個值分開。在case 的每一個操作的最后面都有兩個“;”分號是必需的。實(shí)例 12-18:Linux 是一個多用戶操作系統(tǒng),編寫一程序根據(jù)不同的用戶登錄輸出不同的反饋結(jié)果。(1)用vi 編輯腳本程序test17 rootl

30、ocalhost bin#gedit test17#!/bin/sh case $USER inbeechenecho “You are beichen!”;liangnianecho “You are liangnian”; /注意這里只有一個分號echo “Welcome ! ”; /這里才是兩個分號root)echo “You are root!”;echo “Welcome !”;/將兩命令寫在一行,用一個分號作為分隔符*)echo “Who are you?$USER?”;easc(2)設(shè)置權(quán)限r(nóng)ootlocalhost bin#chmod +x test17(3)執(zhí)行rootloc

31、alhost bin#./ test17You are rootWelcome!12-8 在Shell 腳本中使用函數(shù) Shell 的函數(shù)函數(shù)格式如下: 函數(shù)名( ) 函數(shù)體函數(shù)調(diào)用方式為函數(shù)名 參數(shù)列表 Shell 程序也支持函數(shù)。函數(shù)能完成一特定的功能,可以重復(fù)調(diào)用這個函數(shù)。實(shí)例 12-19:編寫一函數(shù)add 求兩個數(shù)的和,這兩個數(shù)用位置參數(shù)傳入,最后輸出結(jié)果。 (1)編輯代碼rootlocalhost bin#gedit test18#!/bin/shadd( a=$1 b=$2z=expr $a + $becho “The sum is $z”add $1 $2(2)設(shè)置權(quán)限r(nóng)ootl

32、ocalhost bin#chmod +x test18(3執(zhí)行rootlocalhost bin#./ test18 10 20The sum is 30注意:函數(shù)定義完成后必須同時寫出函數(shù)的調(diào)用,然后對此文件進(jìn)行權(quán)限設(shè)定,在執(zhí)行此文件。12-9 在Shell 腳本中調(diào)用其他腳本 程序名 Shell 腳本的調(diào)用 在Shell 腳本的執(zhí)行過程中,Shell 腳本支持調(diào)用另一個Shell 腳本,調(diào)用的格式為:實(shí)例 12-20:在Shell 腳本test19中調(diào)用test20。 (1)調(diào)用test20#test19腳本#!/bin/shecho “The main name is $0”./tes

33、t20echo “The first string is $1”#test20腳本 #!/bin/shecho “ How are you $USER?”(2)設(shè)置權(quán)限r(nóng)ootlocalhost bin#chmod +x test19rootlocalhost bin#chmod +x test20(3)執(zhí)行rootlocalhost bin#./ test19 abc123The main name is ./test19How are you root?the first string is abc123 注意:1 在Linux 編輯中命令區(qū)分大小寫字符。2)在Shell 語句中加入必要的

34、注釋,以便以后查詢和維護(hù),注釋以#開頭。3)對Shell 變量進(jìn)行數(shù)字運(yùn)算時,使用乘法符號“*”時,要用轉(zhuǎn)義字符“”進(jìn)行轉(zhuǎn)義。4)由于Shell 對命令中多余的空格不進(jìn)行任何處理,因此程序員可以利用這一特性調(diào)整程序縮進(jìn),達(dá)到增強(qiáng)程序可讀性效果。5)在對函數(shù)命名時最好能使用有含義且能容易理解的名字,即使函數(shù)名能夠比較準(zhǔn)確地表達(dá)函數(shù)所完成的任務(wù)。同時建議對于較大的程序要建立函數(shù)名和變量命名對照表。 12-10本章小結(jié)本章講解了Linux 下Shell 腳本的定義和相關(guān)Shell 腳本編寫的基礎(chǔ),這些基礎(chǔ)知識是學(xué)習(xí)Shell 腳本編程的關(guān)鍵。接著講解了Shell 腳本的執(zhí)行方式和Shell 腳本的常

35、見流程控制,為Shell 腳本的編程做了準(zhǔn)備。課后習(xí)題1. 選擇題(1 下列說法中正確的是( )。B 掛載U 盤,mount /dev/sda /mnt/u -o iocharset=gb2312C 顯示變量PS1的值用命令 echo PS1D 用命令./abc與sh abc執(zhí)行Shell 腳本abc ,所得的結(jié)果并不相同(2 一個Bash Shell腳本的第一行是什么( )。A. #!/bin/Bash B. #/bin/Bash C. #/bin/csh D. /bin/Bash(3 在Shell 腳本中,用來讀取文件內(nèi)各個域的內(nèi)容并將其賦值給Shell 變量的命令是( )。A. fold

36、 B. join C. tr D. read(4 下列變量名中有效的Shell 變量名是( )。A. -2-time B. _2$3 C. trust_no_1 D. 2004file(5 下列對Shell 變量FRUIT 操作,正確的是( )。A. 為變量賦值:$FRUIT=apple B. 顯示變量的值:fruit=appleC. 顯示變量的值:echo $FRUIT D. 判斷變量是否有值: -f “$FRUIT” (6 在Fedora 12系統(tǒng)中,下列關(guān)于Shell 腳本程序說法不正確的是( )。A. Shell腳本程序以文本的形式存儲B. Shell腳本程序在運(yùn)行前需要進(jìn)行編譯C.

37、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 在Fedora 12系統(tǒng)中,“run.sh”是Shell 執(zhí)行腳本,在執(zhí)行./run.sh file1 file2file3的命令的過程中,變量$1的值為( )。A. run.sh B. file1 C. file2 D. file32. 填空題(1 在Shell 編程時,使用方

38、括號表示測試條件的規(guī)則是 。(2 編寫的Shell 程序運(yùn)行前必須賦予該腳本文件 權(quán)限。3. 簡答題(1 用Shell 編程,判斷一文件是不是字符設(shè)備文件,如果是將其拷貝到 /dev 目錄下。(2 在根目錄下有四個文件m1.txt ,m2.txt ,m3.txt ,m4.txt ,用Shell 編程,實(shí)現(xiàn)自動創(chuàng)建m1,m2,m3,m4四個目錄,并將m1.txt,m2.txt,m3.txt,m4.txt 四個文件分別拷貝到各自相應(yīng)的目錄下。(3 某系統(tǒng)管理員需每天做一定的重復(fù)工作,請按照下列要求,編制一個解決方案: 始啟動應(yīng)用程序myfiles ,輸入stop 時,關(guān)閉myfiles ,輸入st

39、atus 時,查看myfiles 進(jìn)程,否則執(zhí)行*)顯示“EXIT! ”并退出程序。(5 編寫一個Shell 程序,此程序的功能是:顯示root 下的文件信息,然后建立一個abc 的文件夾,在此文件夾下建立一個文件k.c ,修改此文件的權(quán)限為可執(zhí)行。(6 編寫一個Shell 程序,掛載U 盤,在U 盤中根目錄下所有.c 文件拷貝到當(dāng)前目錄,然后卸載U盤。(7 編寫一個Shell 程序,程序執(zhí)行時從鍵盤讀入一個文件名,然后創(chuàng)建這個文件。(8 編寫一個Shell 程序,鍵盤輸入兩個字符串,比較兩個字符串是否相等。(9 編寫三個Shell 程序,分別用for 、while 、與until 求從2+4

40、+100的和。(10 編寫一個Shell 程序,鍵盤輸入兩個數(shù)及+、-、*、與/中的任一運(yùn)算符,計(jì)算這兩個數(shù)的運(yùn)算結(jié)果。(11 編寫兩個Shell 程序kk 及aa ,在kk 中輸入兩個數(shù),調(diào)用aa 計(jì)算計(jì)算這兩個數(shù)之間奇數(shù)的和。(12 編寫Shell 程序,可以掛載U 盤,也可掛載Windows 硬盤的分區(qū),并可對文件進(jìn)行操作。(13 編寫4個函數(shù)分別進(jìn)行算術(shù)運(yùn)算+、-、*、/,并編寫一個菜單,實(shí)現(xiàn)運(yùn)算命令。 (4 請用Shell 編程來實(shí)現(xiàn):當(dāng)輸入不同的選擇時,執(zhí)行不同的操作,如:輸入start 開課程實(shí)訓(xùn)實(shí)訓(xùn)內(nèi)容:編寫一個Shell 程序,呈現(xiàn)一個菜單,有0-5共6個命令選項(xiàng),1為掛載U 盤,2為卸載U 盤,3為顯示U 盤的信息,4把硬盤中的文件拷貝到U 盤,5把U 盤中的文件拷貝到硬盤中,選0為退出。程序分析:把此程序分成題目中要求的6大功能模塊,另外加一個菜單顯示及選擇的主模板。(1) 編輯代碼 rootlocalhost bin#vi test19#!/bin/sh#mountusb.sh#退出程序函數(shù)quit(clearecho “*” echo “* thank you to use,Good bye! *”exit 0#加載 U 盤函數(shù) mountusb( clear #在/mnt 下創(chuàng)建 usb 目錄 mkdir /mnt/usb #查看 U 盤設(shè)備

溫馨提示

  • 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

提交評論