Linux教程ch4Shell程序設(shè)計課件_第1頁
Linux教程ch4Shell程序設(shè)計課件_第2頁
Linux教程ch4Shell程序設(shè)計課件_第3頁
Linux教程ch4Shell程序設(shè)計課件_第4頁
Linux教程ch4Shell程序設(shè)計課件_第5頁
已閱讀5頁,還剩40頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第四章第四章 Shell Linux的的shell 內(nèi)核 csh bashXwindow 其他程序 shell是用戶和系統(tǒng)內(nèi)核之間的接口程序是用戶和系統(tǒng)內(nèi)核之間的接口程序 shell是命令解釋器是命令解釋器 在本章中,在本章中,shell指指Linux的終端的終端 即解釋用戶命令和即解釋用戶命令和shell程序的文字終端程序的文字終端 shell命令的特點及用途命令的特點及用途 n shell程序可以認(rèn)為是將程序可以認(rèn)為是將shell命令按照控制結(jié)構(gòu)組織到一個命令按照控制結(jié)構(gòu)組織到一個 文本文件中,文本文件中, 批量交給批量交給shell去執(zhí)行;去執(zhí)行; n 不同的不同的shell解釋器使用不

2、同的解釋器使用不同的shell命令語法命令語法; n shell程序解釋執(zhí)行,不生成可以執(zhí)行的二進(jìn)制文件程序解釋執(zhí)行,不生成可以執(zhí)行的二進(jìn)制文件; n 可以幫助用戶完成特定的任務(wù),提高使用、維護(hù)系統(tǒng)的效率可以幫助用戶完成特定的任務(wù),提高使用、維護(hù)系統(tǒng)的效率; n 了解了解shell程序可以更好的配置和使用程序可以更好的配置和使用Linux; n 適合于編寫執(zhí)行相對簡單的任務(wù)的工具,因為它更強調(diào)易于配置、維護(hù)和適合于編寫執(zhí)行相對簡單的任務(wù)的工具,因為它更強調(diào)易于配置、維護(hù)和 可移植性可移植性;不適合用來完成時間緊迫型和處理器忙碌型的任務(wù)不適合用來完成時間緊迫型和處理器忙碌型的任務(wù). n 通過通過

3、cat /ect/shells命令查看安裝的命令查看安裝的shell. shell程序的功能是將命令序列(date ls -l) 組合并由系統(tǒng)自 動執(zhí)行。 文件交給系統(tǒng)執(zhí)行可用三種方式實現(xiàn): n 利用輸入輸出重定向 $ sh / if-z ls -a $DIREC then echo “$DIREC is indeed empty” else echo “$DIREC is not empty” fi 運行: $ testdir dirname 例3:考慮一個實際應(yīng)用問題: 設(shè)有一個連續(xù)運行系統(tǒng),每當(dāng)運行中遇到錯誤時,創(chuàng)建一 個文件errorfile并將錯誤信息寫入其中;要求我們編寫一段 sh

4、ell程序生成錯誤日志文件,即寫一個名為checkerr程序, 每小時運行一次記錄這些錯誤。 實現(xiàn)方案: 如果errorfile存在,checkerr把日期、時間、錯誤信息一同記入datelog 文件中,然后刪除errorfile ;若errorfile不存在,則記下日期、時間并給 出無錯誤提示一并寫入datelog中。 #!/bin/sh # 例題 checkerr.sh date datelog if test -r errorfile then cat errorfile datelog rm errorfile else echo “No error this hour”datelog

5、 fi 程序編碼: 2)case語句 語法:case word in pattern -1) pat1 -list1; pattern -2) pat2 -list2; *) default -list; esac 其中:word將與各匹配模式比較,“;”符表示匹配結(jié)束, “*”號為通配符。 例1:向指定的文件中添加文本 #! /bin/sh # case $# in 1) cat $1; 2) cat$2$1; *) echo usage: append.sh from to ; esac 執(zhí)行:$ append.sh file1 $ append.sh file1 file2 # !/bi

6、n/sh # 練習(xí) wh.sh # case 結(jié)構(gòu) hour= date+%H case $hour in 01-9|101) echo “Good morning!”; 1234567) echo “Good afternoon!”; *) echo “Good evening!”; esac 例2:寫一段根據(jù)一天中不同時間給出問候信息的程序 例3:用case語句測試命令行變量,完成不同的工作內(nèi)容. # !/bin/sh echo “Enter your option and hit :c” read option case “$option” in d) date; l) ls; w) w

7、ho; q) exit 0; *) echo “invalid option; try running the program again.” exit 1; esac exit 0 5. 循環(huán)語句 循環(huán)語句完成命令的重復(fù)執(zhí)行 1)for 循環(huán) 語法:for var in word1 word2 wordn do commands done for 循環(huán)中可根據(jù)需要進(jìn)行嵌套 例1:列出用戶注冊目錄下的cc和work子目錄中所有 * .c文件。 # !/ bin/sh # 顯示.c文件 cd $HOME for dir in cc work do echo “.in $dir.” cd $dir

8、 for file in *.c do ls -l $file done cd done 2) while 循環(huán) 以命令表的出口狀態(tài)為判別條件,決定循環(huán)體中的 命令是否執(zhí)行。語法結(jié)構(gòu): while cmdlist1 do cmdlist2 done 例1:#!/bin/sh # while.sh while -r filea do echo before sleep sleep 5 echo sleep done done 例2:#! /bin/sh # c VAL=1 while $VAL -lt 11 do touch VAL=expr $VAL+1 done 例2中幾個新內(nèi)容: 命令to

9、uch的功能:改變文件訪問權(quán)限和修改時間, 用法:touch選項 時間 文件名;若指出的文件名不 存在時,則創(chuàng)建具有缺省權(quán)限及當(dāng)前時間的文件。 expr 的用法:將實參作為表達(dá)式求值的一種方法 $ count=0 $ count=expr $count+1 (用 count =$count +1 不行) $ echo $count 另外while循環(huán)中還可以使用: break-退出當(dāng)前所在的整個循環(huán) continue-結(jié)束本輪循環(huán),轉(zhuǎn)到下一輪循環(huán)的開始 在while循環(huán)中的cmdlist1的設(shè)計要注意不能發(fā)生死循環(huán). 6. 讀取標(biāo)準(zhǔn)輸入語句 將標(biāo)準(zhǔn)輸入的值存入到變量中用read命令. 例: #

10、 the read command example echo “enter you name:c” read name echo “your name is $name” read 命令中的參數(shù)說明: read word1word2rest 存放方式為:第一,第二,其余參數(shù) 例:read 命令參數(shù)使用 # test read command, echo “give me a long sentence:c” read word1 word2 rest echo “$word1n $word2n $rest” echo “end of my act” 運行: $ read_test give m

11、e a long sentence: 輸入:lets test the read command. 輸出:lets test the read command end od my act 7. 函數(shù) function funname () action; return int; 說明: 1、可以帶function fun() 定義,也可以直接fun() 定義,不 帶任何參數(shù)。 2、參數(shù)返回,可以顯示加:return 返回,如果不加,將 以最后一條命令運行結(jié)果,作為返回值。 return后跟數(shù)值 n(0-255) 。 例:testfun.sh fun() if test f $1 then re

12、turn 11 elif test d $1 then return 12 else return 13 fi echo “Using fun()” fun $1 echo $? 運行: $ sh testfun.sh /bin bash的內(nèi)部命令的內(nèi)部命令 echo eval exec export readonly read Shift wait exit 7. Shell 程序的調(diào)試 1)交互調(diào)試 先用命令驗證,再引入shell編程中 2)在編輯過程中執(zhí)行程序 打開多個窗口,邊編輯邊執(zhí)行 3)用shell程序跟蹤執(zhí)行 使用shell的 -v,-x選項可對shell程序進(jìn)行跟蹤 $ sh

13、-v test.sh $sh -x test.sh 練習(xí)題練習(xí)題 1用用Shell編程,判斷一個文件是不是字符設(shè)備文件,如果是將其拷貝到編程,判斷一個文件是不是字符設(shè)備文件,如果是將其拷貝到 /dev 目錄下,否則提示目錄下,否則提示“This not exit”的信息。的信息。 2寫一條命令,搜索文件寫一條命令,搜索文件/etc/passwd中的含有字符串中的含有字符串“sarwar”的行,的行, 并把這些行排序后輸出到文件并把這些行排序后輸出到文件passwd.sarwar中。中。 3設(shè)計一個設(shè)計一個Shell程序,在程序,在/userdata目錄下建立目錄下建立50個目錄,即個目錄,即u

14、ser1 user50,并設(shè)置每個目錄的權(quán)限為可執(zhí)行權(quán)限。,并設(shè)置每個目錄的權(quán)限為可執(zhí)行權(quán)限。 4請定義一個函數(shù),其功能是:提示用戶輸入一個數(shù),如果輸入的數(shù)不請定義一個函數(shù),其功能是:提示用戶輸入一個數(shù),如果輸入的數(shù)不 是正數(shù),則提示用戶輸入的數(shù)據(jù)有誤,并提示用戶重新輸入,直到用戶是正數(shù),則提示用戶輸入的數(shù)據(jù)有誤,并提示用戶重新輸入,直到用戶 輸入的數(shù)為正數(shù)時,提示輸入數(shù)據(jù)正確,并將該輸入數(shù)據(jù)加上輸入的數(shù)為正數(shù)時,提示輸入數(shù)據(jù)正確,并將該輸入數(shù)據(jù)加上100后將后將 結(jié)果顯示出來,同時顯示系統(tǒng)的時間。結(jié)果顯示出來,同時顯示系統(tǒng)的時間。 練習(xí)題練習(xí)題 5閱讀下面閱讀下面shell程序,請寫出執(zhí)行結(jié)果。程序,請寫出執(zhí)行結(jié)果。 paramtest #!/bin/bash echo A:$0 echo B:$* echo C:$# echo D:$2 shift echo E:$# echo F:$2 set Happy New Year, everyone echo G:$* 1. !/bin/sh “Input :” read if -c $ then cp $ /dev else echo “This not exit!” fi 2. grep “sarwar” passwd.sarwar 3. #!/bin/sh i=1 while i -le 50 do i

溫馨提示

  • 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

提交評論