




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、第12章Shell腳本編程本章內(nèi)容Shell命令行的運行編寫、修改權(quán)限和執(zhí)行Shell程序的步驟在Shell程序中使用參數(shù)和變量表達式比較、循環(huán)結(jié)構(gòu)語句和條件結(jié)構(gòu)語句在Shell程序中使用函數(shù)和調(diào)用其他Shell程序12-1Shell命令行書寫規(guī)則學習目標Shell命令行的書寫規(guī)則對Shell命令行基本功能的理解有助于編寫更好的Shell程序,在執(zhí)行Shell命令時多個命令可以在一個命令行上運行,但此時要使用分號(;)分隔命令,例如:rootlocalhost root# ls a* -l;free;df長Shell命令行可以使用反斜線字符()在命令行上擴充,例如:rootlocalhost
2、root# echo>long comma nd ”This is long comma ndthis is 、:I . 7. 注意:> ”符號是自動產(chǎn)生的,而不是輸入的。12-2 編寫/修改權(quán)限及執(zhí)行 Shell程序的步驟學習目標編寫Shell程序執(zhí)行Shell程序Shell程序有很多類似C語言和其他程序設(shè)計語言的特征,但是又沒有程序語言那樣復(fù)雜。Shell程序是指放在一個文件中的一系列Linux命令和實用程序。在執(zhí)行的時候,通過Linux操作系統(tǒng)一個接一個地解釋和執(zhí)行每條命令。首先,來編寫第一個Shell程序,從中學習 Shell程序的編寫、修改權(quán)限、執(zhí)行過程。12-2-1 編
3、輯Shell程序編輯一個內(nèi)容如下的源程序,保存文件名為date,可將其存放在目錄/bin下。rootlocalhost bin #vi date#! /bi n/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%為輸入格式控制符。12-2-2建立可執(zhí)行程序編輯完該文件之后不能立即執(zhí)行該文件,需給文件設(shè)置可執(zhí)行程序權(quán)限。使用如下命令。
4、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所編寫的程序,即把/bin的這個目錄添加到整個
5、環(huán)境變量中。具體操作如下:rootlocalhost root#export PATH=/bin:$PATHrootlocalhost bin # dateMr.root,Today is:二月06星期二Wish you a lucky day !實例12-1 :編寫一個Shell程序mkf,此程序的功能是:顯示 root下的文件 信息,然后建立一個 kk的文件夾,在此文件夾下建立一個文件aa,修改此文件的權(quán)限為可執(zhí)行。分析:此Shell程序中需要依次執(zhí)行下列命令為:進入 root 目錄:cd /root顯示root目錄下的文件信息:Is - l新建文件夾kk: mkdir kk進入root/
6、kk 目錄:cd kk新建一個文件aa: vi aa #編輯完成后需手工保存修改aa文件的權(quán)限為可執(zhí)行:chmod +x aa回至U root 目錄:cd /root因此該Shell程序只是以上命令的順序集合,假定程序名為mkfrootlocalhost root#vi mkfcd /rootls - lmkdir kkcd kkvi aachmod +x aacd /root12-3 在Shell程序中使用的參數(shù)學習目標位置參數(shù)內(nèi)部參數(shù)在Shell編程時同樣可以使用參數(shù)。 Shell如同ls命令可以接受目錄等作為它的參數(shù)一樣, 程序中的參數(shù)分為位置參數(shù)和內(nèi)部參數(shù)等。12-3-1位置參數(shù)由系統(tǒng)
7、提供的參數(shù)稱為位置參數(shù)。位置參數(shù)的值可以用$N得到,N是一個數(shù)字,如果為 1,即$1。類似C語言中的數(shù)組,Linux會把輸入的命令字符串分段并給每段進行標號,標號從0開始。第0號為程序名字,從 1開始就表示傳遞給程序的參數(shù)。如$0表示程序的名字,$1表示傳遞給程序的第一個參數(shù),以此類推。12-3-2 內(nèi)部參數(shù)上述過程中的$o是一個內(nèi)部變量,它是必須的,而$1則可有可無,最常用的內(nèi)部變量有$o、$#、$?、$*,它們的含義如下。$o:命令含命令所在的路徑。$#:傳遞給程序的總的參數(shù)數(shù)目。$?:Shell程序在Shell中退岀的情況,正常退岀返回0,反之為非0值。$* :傳遞給程序的所有參數(shù)組成的
8、字符串。實例12-2 :編寫一個Shell程序,用于描述 Shell程序中的位置參數(shù)為:$0、$#、$?、$*,程序名為testl ,代碼如下:rootlocalhost bin#vi testl #! /bi n/shecho “ Program name is $0” ;echo “ There are totally $# parameters passed to this programecho “ The last is $?” ;echo “ The parameter are $*” ;執(zhí)行后的結(jié)果如下:傳遞5個參數(shù)給出程序的完整路徑和名字參數(shù)的總數(shù)程序執(zhí)行效果返回由參數(shù)組成的字
9、符串rootlocalhost bin # test1 this is a test program /Program n ame is /bi n/test1/There are totally 5 parameters passed to this program /The last is 0/The parameters are this is a test program /注意:命令不計算在參數(shù)內(nèi)。實例12-3 :利用內(nèi)部變量和位置參數(shù)編寫一個名為test2的簡單刪除程序,如刪除的文件名為a,則在終端中輸入的命令為:test a分析:除命令外至少還有一個位置參數(shù),即$#不能為0,刪除
10、不能為$1,程序設(shè)計過程如下。(1) 用vi編輯程序rootlocalhost bin#vi test2#! /bi n/shif test $# -eq 0the necho “ Please specify a file!”elsegzip $1/現(xiàn)對文件進行壓縮mv $1.gz $HOME/dustbi n /移動到回收站echo "File $1 is deleted !”fi(2) 設(shè)置權(quán)限r(nóng)ootlocalhost bin #chmod +x test2 運行rootlocalhost bin# test2 a (如果 a 文件在 bin 目錄下存在)File a is
11、deleted!12-4 在Shell程序中的使用變量學習目標變量的賦值變量的訪問變量的輸入12-4-1變量的賦值在Shell編程中,所有的變量名都由字符串組成,并且不需要對變量進行聲明 一個變量,其格式如下:要賦值給變量名=值等號(=)前后沒有空格例如:x=6a= ” How are you ”表示把6賦值給變量x,字符串“ How are you ”賦值給變量a。12-4-2 訪問變量值如果要訪問變量值,可以在變量前面加一個美元符號“$”,例如:rootlocalhost bin#a=” How are you ”rootlocalhost bin #echo“ He juest said
12、:$a ”A is:hello world一個變量給另一個變量賦值可以寫成:變量2=$變量1例如:x=$ii+可以寫成:i=$i+112-4-3鍵盤讀入變量值在Shell程序設(shè)計中,變量的值可以作為字符串從鍵盤讀入,其格式為:read 變量例如:rootlocalhost bin #read strread為讀入命令,它表示從鍵盤讀入字符串到str。Fl實例12-4 :編寫一個Shell程序test3 ,程序執(zhí)行時從鍵盤讀入一個目錄名,然后 顯示這個目錄下所有文件的信息。分析:存放目錄的變量為 DIRECTOR丫其讀入語句為:read DIRECTORY顯示文件的信息命令為:ls - aroo
13、tlocalhost bin#vi test3#! /bi n/shecho “ please in put n ame of directory”read DIRECTORYcd $DIRECTORYls - l設(shè)置權(quán)限r(nóng)ootlocalhost bin #chmod +x test3執(zhí)行rootlocalhost bin #./test3輸入路徑時需“ /實例12-5 :運行程序test4 ,從鍵盤讀入x、y的值,然后做加法運算,最后輸岀結(jié)果。(1 )用vi編輯程序rootlocalhost bin#vi test4 #! /bi n/shecho “ please in put x y
14、read x,yz='expr $x+$y'echo “ The sum is $z ”(2 )設(shè)置權(quán)限r(nóng)ootlocalhost bin #chmod +x test4執(zhí)行rootlocalhost bin #./ test445 78The sum is 123表達式total='expr $total +$num'及num='expr $num +1' 中的符號"' ”為鍵盤左上角的'鍵。12-5 表達式的比較學習目標字符串操作符邏輯運算符用test比較的運算符數(shù)字比較符文件操作符在Shell程序中,通常使用表達式
15、比較來完成邏輯任務(wù)。表達式所代表的操作符有字符操作符、數(shù)字操作符、邏輯操作符、以及文件操作符。其中文件操作符是一種Shell所獨特的操作符因為Shell里的變量都是字符串,為了達到對文件進行操作的目的,于是才提供了文件操作符。12-5-1 字符串比較作用:測試字符串是否相等、長度是否為零,字符串是否為NULL。常用的字符串操作符如表12-1所示.。表12-1 常用的字符串操作符字符串操作符含義及返回值=P比較兩個字符串是否相同,相同則為“真”!=比較兩個字符串是否不相同,不同則為“真”-n比較兩個字付串長度疋否大于零,右大于零則為 真-z比較兩個字符串長度是否等于零,若等于零則為“真”(1 )
16、用Vi編輯程序rootlocalhost bin#vi test5#! /bin/Bashread ar1read ar2“ $ar1 ” =“ $ar2 ” echo $? #?保存前一個命令的返回碼(2 )設(shè)置權(quán)限r(nóng)ootlocalhost bin #chmod +x test5執(zhí)行rootlocalhost root#./ test5aaabbb1小注意:”后面和”前面及等號“=“的前后都應(yīng)有一個空格;注意這里是程序的退岀情況, 如果ar1和ar2的字符串是不想等的非正常退岀,輸岀結(jié)果為1。札實例12-7 :比較字符串長度是否大于零(1 )用vi編輯程序rootlocalhost bin
17、#vi test6#! /bi n/Bashread ar-n “ $ar ” echo $? / 保存前一個命令的返回碼(2 )設(shè)置權(quán)限r(nóng)ootlocalhost bin #chmod +x test6(3) 執(zhí)行rootlocalhost bin #./ test60運行結(jié)果1表示ar的小于等于零,0表示ar的長度大于零。12-5-2 數(shù)字比較在Bash Shell編程中的關(guān)系運算有別于其他編程語言,用表12-2中的運算符用test語句表示大小的比較。表12-2 用test比較的運算符運算符號含義-eq相等-ge大于等于-le小于等于-ne不等于-gt大于-lt小于實例12-8 :比較兩個
18、數(shù)字是否相等(1 )用vi編輯程序rootlocalhost bin#vi test7#! /bi n/Bashread x,yif test $x the n-eq $yecho“ $x=$y ”elseecho“ $x!=$yfi(2 )設(shè)置權(quán)限r(nóng)ootlocalhost bin #chmod +x test7(3)執(zhí)行rootlocalhost bin #./ test750 10050!=100rootlocalhost bin #./ test7150 150150= =15012-5-3邏輯操作在Shell程序設(shè)計中的邏輯運算符如表12-3所示實例12-9:分別給兩個字符變量賦值,
19、一個變量賦予一定的值,另一個變量為空,12-3 Shell 中的邏輯運算符運算符號含義!反:與一個邏輯值相反的邏輯值-aP與(an d):兩個邏輯值為“是”返回值為“是”,反之為“否”-o或(or):兩個邏輯值有一個為“是”,返回值就是“是”求兩者的與、或操作 (1 )用vi編輯程序rootlocalhost bin#vi test8#! /bi n/Bashpart1 =” 1111”#part2 為空-a “ $ part2 ”保存前一個命令的返回碼-o “ $ part2 ”part2 =”“ $ part1echo $?#“ $ part1echo $?(2 )設(shè)置權(quán)限r(nóng)ootloca
20、lhost bin #chmod +x test8 (3)執(zhí)行 rootlocalhost bin #./ test81012-5-4 文件操作文件測試操作表達式通常是為了測試文件的信息,一般由腳本來決定文件是否應(yīng)該備份、復(fù)制或刪除。由于test關(guān)于文件的操作符有很多,在表12-4中只列舉一些常用的操作符。表12-4 文件測試操作符運算符號含義-d:對象存在且為目錄返回值為“是”-f對象存在且為文件返回值為“是”-L對象存在且為符號連接返回值為“是”-r對象存在且可讀則返回值為“是”-sr對象存在且長度非零則返回值為“是”-w對象存在且且可寫則返回值為“是”-x對象存在且且可執(zhí)行則返回值為“是
21、”實例12-10 :判斷zb目錄是否存在于/root下。(1)用vi編輯程序rootlocalhost bin #vi test9#! /bi n/Bash-d /root/zb echo $? #保存前一個命令的返回碼(2 )設(shè)置權(quán)限r(nóng)ootlocalhost bin #chmod +x test9(3) 執(zhí)行rootlocalhost bi nt#./ test9(4) 在/root 添加zb目錄rootlocalhost bin #mkdir zb(5)執(zhí)行rootlocalhost bin #./test90"注意:運行結(jié)果是返回參數(shù)“$? ”,結(jié)果1表示判斷的目錄不存在,0
22、表示判斷的目錄不存在。:編寫一個Shell程序test10,輸入一個字符串,如果是目錄,則顯示目錄下的信息,如為文件顯示文件的內(nèi)容。(1 )用vi編輯程序rootlocalhost bin#vi test10#! /bi n/Bashecho “ Please en ter the directory n ame or file n ameread DORFif -d $DORF the nls $DORFelif -f $DORF the ncat $DORFelseecho “ in put error! ”fi(2 )設(shè)置權(quán)限r(nóng)ootlocalhost bin #chmod +x tes
23、t10(3)執(zhí)行rootlocalhost bin #./ test1012-6循環(huán)結(jié)構(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. " 、'、'產(chǎn)八汪意:變量要在循環(huán)內(nèi)部用來指列表當中的對象。列表是在for循環(huán)的內(nèi)部要操作的對象,可以是字符串也可以是文件,如果是文件則為文件實例12-12 :在列表中的值:兩行輸出a,b,c,e,l,2,4,6,8用循環(huán)的方式把字符與數(shù)字分成(1 )用gedit編輯腳本程序testll rootloca
24、lhost bin#gedittestll #! /bi n/Bashfor i in a,b,c,e,I 2,4,6,8doecho $idone(2 )設(shè)置權(quán)限r(nóng)ootlocalhost bin #chmod +x test11(3)執(zhí)行rootlocalhost bin #./ test11a,b,c,e,i2,4,6,8汪意:在循環(huán)列表中的空格可表示換行。實例12-13 :刪除垃圾箱中的所有文件。分析:在本機中,垃圾箱的位置是在 $HOME/.Trash中,因而是在刪除$HOME/.Trash列表當 中的所有文件,程序腳本如下。(1 )用gedit編輯腳本程序test12rootloc
25、alhost bin #gedit test12#! /bi n/Bashfor i in $HOME/.Trash/*dorm $ iecho “ $ i has bee n deleted!”done(2 )設(shè)置權(quán)限r(nóng)ootlocalhost bin #chmod +x test12(3)執(zhí)行rootlocalhost bin #./ test12 /root/.Trash/abc has bee n deleted! /root/.Trash/abcl has bee n deleted!:求從1100的和(1 )用gedit編輯腳本程序test13 rootlocalhost bin
26、#gedit test13 #! /bi n/Bashtotal =0for(j=1;j<=100;j+);dototal='expr $total + $j'doneecho “ 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語句中的雙括號不能省,最后的分號可有可無,表達式total='expr $total +$j'的加號兩邊的空格不能省,否則會成為字符串的連
27、接。12-6-2 while 循環(huán)語法:while 表達式do操作done只要表達式為真,do和done之間的操作就一直會進行:用while循環(huán)求1100的和(1 )用gedit編輯腳本程序test14 rootlocalhost bin #gedit test13 total =0n um=0while( num<=100);dototal= ' expor $total +$ num doneecho “ The result is $total ”(2 )設(shè)置權(quán)限r(nóng)ootlocalhost bin #chmod +x test14(3) 執(zhí)行rootlocalhost bi
28、n #./ test14The result is 505012-6-3 until 循環(huán)語法:un til 表達式do操作done重復(fù)do和done之間的操作直到表達式成立為止實例12-16 :用until 循環(huán)求1100的和(1 )用gedit編輯腳本程序test15 rootlocalhost bin #gedit test15 total =0 n um=0un til $sum gt 100dototal= ' expor $total +$ num num=' expr $num + 1'doneecho “ The result is $total ”(2
29、 )設(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)語句Shell程序中的條件語句主要有 if語句與case語句12-7-1 if 語句語法:if 表達式1 then操作elif 表達式2 then操作elif 表達式3 then操作J Jelse操作fiLinux里的if的結(jié)束標志是將if反過來寫成fi ;而elif 其實是else if elif理論上可以有無限多個。的縮寫。其中,:用for循環(huán)求1 100的和。
30、(1 )用gedit編輯腳本程序test16 rootlocalhost bin#gedit test16 for(j=0;jv=10;j+)doif($j%2=1)the necho“ $j ”fidone(2 )設(shè)置權(quán)限r(nóng)ootlocalhost bin #chmod +x test16(3) 執(zhí)行rootlocalhost bin #./ test161357912-7-2 case 語句語法:case表達式in值1|值2)操作;值引值4)操作;值5|值6)操作;* )操作;esaccase的作用就是當字符串與某個值相同是就執(zhí)行那個值后面的操作。如果同一個操作對于多個值,則使用“ | ”
31、將各個值分開。在 case的每一個操作的最后面都有兩個“;”分號是必需的。實例12-18 : Linux是一個多用戶操作系統(tǒng),編寫一程序根據(jù)不同的用戶登錄輸岀不同的反饋結(jié)果。(1 )用vi編輯腳本程序test17rootlocalhost bin #gedit test17#!/bi n/shcase $USER in beechen)echo “ You are beiche n!”lia ngnian)echoechoYou are lia ngnian Welcome ! ” ;/注意這里只有一個分號 這里才是兩個分號root )echoYou are root!Welcome ! ”/
32、將兩命令寫在一行,” ;echo用一個分號作為分隔符*)echo“Who are you?$USER? ”easc(2 )設(shè)置權(quán)限r(nóng)ootlocalhost bin #chmod +x test17(3) 執(zhí)行 rootlocalhost bin #./ test17You are rootWelcome!12-8 在Shell腳本中使用函數(shù)學習目標Shell的函數(shù)Shell程序也支持函數(shù)。函數(shù)能完成一特定的功能,可以重復(fù)調(diào)用這個函數(shù)。函數(shù)格式如下: 函數(shù)名()函數(shù)體函數(shù)調(diào)用方式為 函數(shù)名參數(shù)列表:編寫一函數(shù)add求兩個數(shù)的和,這兩個數(shù)用位置參數(shù)傳入,最后輸岀(1 )編輯代碼rootlocal
33、host bin#gedit test18#!/bi n/shadd()a=$1b=$2z=' expr $a + $b 'echo “ The sum is $z ”add $1 $2(2 )設(shè)置權(quán)限r(nóng)ootlocalhost bin #chmod +x test18執(zhí)行rootlocalhost bin#./ test18 10 20The sum is 30函數(shù)定義完成后必須同時寫岀函數(shù)的調(diào)用,然后對此文件進行權(quán)限設(shè)定,在執(zhí)行此文件。12-9 在Shell腳本中調(diào)用其他腳本學習目標Shell腳本支持調(diào)用另一個Shell腳本,調(diào)用的格式為:Shell腳本的調(diào)用 在Shell
34、腳本的執(zhí)行過程中,程序名:在 Shell 腳本 test19 中調(diào)用 test20。(1)調(diào)用 test20#test19 腳本#!/bi n/shecho “ The main n ame is $0”./test20echo “ The first stri ng is $1”#test20 腳本#!/bi n/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 ab
35、c123The mai n n ame is ./test19How are you root?the first stri ng is abc1231)在Linux編輯中命令區(qū)分大小寫字符。2) 在Shell語句中加入必要的注釋,以便以后查詢和維護,注釋以#開頭。3 )對Shell變量進行數(shù)字運算時,使用乘法符號“* ”時,要用轉(zhuǎn)義字符“”進行轉(zhuǎn)義4)由于Shell對命令中多余的空格不進行任何處理,因此程序員可以利用這一特性調(diào)整程序縮 進,達到增強程序可讀性效果。5)在對函數(shù)命名時最好能使用有含義且能容易理解的名字,即使函數(shù)名能夠比較準確地表達函 數(shù)所完成的任務(wù)。同時建議對于較大的程序要建立
36、函數(shù)名和變量命名對照表。12-10 本章小結(jié)本章講解了 Linux下Shell腳本的定義和相關(guān)Shell腳本編寫的基礎(chǔ),這些基礎(chǔ)知識是學習Shell腳本編程的關(guān)鍵。接著講解了Shell腳本的執(zhí)行方式和Shell腳本的常見流程控制,為Shell腳本的編程做了準備課后習題1. 選擇題(1) 下列說法中正確的是()。A . 安裝軟件包 fctix-3.4.tar.bz2,要按順序使用./configure;make;makein stall;tar 命令B. 掛載 U盤,mount /dev/sda /mnt/u -o iocharset=gb2312C. 顯示變量 PS1的值用命令 echo PS
37、1D. 用命令./abc與sh abc執(zhí)行Shell腳本abc,所得的結(jié)果并不相同(2) 一個Bash Shell腳本的第一行是什么()。A. #!/bi n/BashB. #/b in/BashC. #/b in/cshD. /bi n/Bash(3) 在Shell腳本中,用來讀取文件內(nèi)各個域的內(nèi)容并將其賦值給Shell變量的命令是()A. fold B. join C. trD. read(4) 下列變量名中有效的Shell變量名是()。A. -2-time B. _2$3 C. trust_ no_1 D. 2004file(5) 下列對Shell變量FRUIT操作,正確的是()。A.為
38、變量賦值:$FRUIT=apple B.顯示變量的值:fruit=appleC.顯示變量的值:echo $FRUIT D.判斷變量是否有值:-f “$FRUIf (6) 在Fedora 12系統(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攜帶
39、位置參數(shù)的個數(shù)E用$2引用第二個位置參數(shù)(8) 在 Fedora 12 系統(tǒng)中,“ run.sh ”是 Shell 執(zhí)行腳本,在執(zhí)行./run.sh file1 file2file3 的命令的過程中,變量 $1的值為()。A. run .shB. file1 C. file2 D. file32. 填空題(1) 在Shell編程時,使用方括號表示測試條件的規(guī)則是 。(2) 編寫的Shell程序運行前必須賦予該腳本文件 權(quán)限。3. 簡答題(1) 用Shell編程,判斷一文件是不是字符設(shè)備文件,如果是將其拷貝到/dev目錄下。(2) 在根目錄下有四個文件m1.txt , m2.txt , m3.t
40、xt ,m4.txt,用Shell編程,實現(xiàn)自動創(chuàng)建 m1,m2,m3,m4四個目錄,并將 m1.txt,m2.txt,m3.txt,m4.txt四個文件分別拷貝 到各自相應(yīng)的目錄下。(3) 某系統(tǒng)管理員需每天做一定的重復(fù)工作,請按照下列要求,編制一個解決方案: 在下午4 :50刪除/abc目錄下的全部子目錄和全部文件;從早8:00下午6:00每小時讀取/xyz目錄下x1文件中每行第一個域的全部數(shù)據(jù)加入 到/backup 目錄下的bak01.txt 文件內(nèi);每逢星期一下午5:50將/data 目錄下的所有目錄和文件歸檔并壓縮為文件:backup.tar.gz ;在下午5:55將IDE接口的CD
41、-ROM卸載(假設(shè):CD-ROM的設(shè)備名為hdc ); 在早晨8:00前開機后啟動。(4) 請用Shell編程來實現(xiàn):當輸入不同的選擇時,執(zhí)行不同的操作,如:輸入start 開始啟動應(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
42、盤。(7) 編寫一個Shell程序,程序執(zhí)行時從鍵盤讀入一個文件名,然后創(chuàng)建這個文件。(8) 編寫一個Shell程序,鍵盤輸入兩個字符串,比較兩個字符串是否相等。(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)編輯代碼rootlocalhost bin#vi test19#!/bi n/sh#mou
溫馨提示
- 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)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 常州工程職業(yè)技術(shù)學院《高級阿拉伯語二》2023-2024學年第二學期期末試卷
- 新疆科技學院《外國史學名著選讀》2023-2024學年第二學期期末試卷
- 淮北理工學院《社會學原理類》2023-2024學年第二學期期末試卷
- 重慶智能工程職業(yè)學院《生物統(tǒng)計與應(yīng)用》2023-2024學年第二學期期末試卷
- 赤峰學院《教育史專題研究》2023-2024學年第二學期期末試卷
- 梧州學院《現(xiàn)代舞創(chuàng)編》2023-2024學年第二學期期末試卷
- 東北林業(yè)大學《生物科學專業(yè)英語》2023-2024學年第二學期期末試卷
- 山西航空職業(yè)技術(shù)學院《攝影報道》2023-2024學年第二學期期末試卷
- 合肥共達職業(yè)技術(shù)學院《現(xiàn)代電子測量技術(shù)》2023-2024學年第二學期期末試卷
- 內(nèi)蒙古工業(yè)大學《概率論與數(shù)據(jù)統(tǒng)計》2023-2024學年第二學期期末試卷
- GB/T 16451-2008天然脂肪醇
- 中建某公司技術(shù)質(zhì)量工作會講稿總工
- 施工圖紙接收及分發(fā)臺賬
- Visio圖標最全網(wǎng)絡(luò)通信圖標庫(可用于VISIO等)課件
- 馬工程西方經(jīng)濟學(第二版)教學課件-8
- 部編版二年級道德與法治下冊全冊課件
- 六年級下冊信息技術(shù)教學計劃
- 臺塑關(guān)系企業(yè)資材管理規(guī)則
- 沉井施工方案
- 民法典侵權(quán)責任編課件
- 10KV系統(tǒng)短路電流整定計算表格
評論
0/150
提交評論