




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第14章Shell腳本調試技術本章主要涉及到的知識點有:Shell腳本中的常見錯誤:主要介紹Shell程序設計中經常遇到的語法錯誤和邏輯錯誤。Shell腳本調試技術:主要介紹Shell腳本的調試方法,包括簡單的echo命令,trap命令,tee命令以及鉤子程序調試方法等。14.1Shell腳本中的常見錯誤實際上,編寫Shell腳本的過程就是不斷排除錯誤的過程。尤其對于初學者來說,由于不熟悉Shell腳本的語法,會經常出現一些意想不到的錯誤。本節列出了Shell程序設計中經常出現的錯誤,從而使得讀者在編程時可以避免這些錯誤的發生。14.1.1常見語法錯誤在進行Shell程序設計的時候,語法錯誤經常出現在關鍵字書寫錯誤,引號錯誤,漏掉空格符以及變量的大小寫問題等。#!/bin/bashn=1while[$n-le5];echo"thenumberis$n."let"n+=1"done[root@linuxchapter14]#./ex14-1.sh./ex14-1.sh:line7:syntaxerrornearunexpectedtoken`done'./ex14-1.sh:line7:`done'【例14-1】本例給出了一種常見的語法錯誤#!/bin/bashwhile:doreadxif[$x=="exit"];thenexit0elseecho"$x"fidone[root@linuxchapter14]#./ex14-2.shabc./ex14-2.sh:line6:[:missing`]'abc…【例14-2】演示在if語句中由于缺少空格而導致錯誤發生14.1.2常見邏輯錯誤通常情況下,Shell腳本中的語法錯誤是非常明顯的,并且語法錯誤一般會導致程序不可執行。但是邏輯錯誤卻比較隱蔽,因為這些錯誤通常不會引起程序執行失敗,但是邏輯錯誤卻會導致程序得到錯誤的結果。因此,相比語法錯誤,邏輯錯誤調試起來會更加困難。#!/bin/bashx=1if[x==1];thenecho"x=1"elif[x==0];thenecho"x=0"elseecho"other"fi[root@linuxchapter14]#./ex14-3.shother【例14-3】本例演示了Shell編程中經常遇到的一種邏輯錯誤14.2Shell腳本調試技術任何一個Shell開發者,都必須掌握所需要的調試技術,對于初學者來說,這顯得尤為重要。因為在編寫Shell腳本的時候,經常會遇到各種各樣的錯誤,通過調試技術,可以快速地排除錯誤。本節將介紹Shell編程中經常使用的幾種調試技術。14.2.1使用echo命令調試腳本echo命令是Shell編程中最簡單的調試技術。當用戶需要驗證程序中某個變量的值時,就可以直接使用echo命令將該變量的值輸出到屏幕。#!/bin/basha=1if["$a"-eq1]thenb=2elseb=1fic=3echo"a=$a"echo"b=$b"echo"c=$c"[root@linuxchapter14]#./ex14-4.sha=1b=2c=3【例14-4】演示通過echo命令來調試程序的方法14.2.2使用trap命令調試Shell腳本在Shell腳本執行的時候,會產生3個所謂的偽信號,分別為EXIT、ERR以及DEBUG。其中,EXIT信號在退出某個函數或者某個腳本執行完成時觸發,ERR信號在某條命令返回非0狀態時觸發,DEBUG信號在腳本的每一條命令執行之前觸發。#!/bin/bashERRTRAP(){echo"[LINE:$1]Error:Commandorfunctionexitedwithstatuscode$?"}func(){return1}trap'ERRTRAP$LINENO'ERRabcfunc【例14-5】演示使用trap命令輸出發生錯誤的行號以及退出狀態碼[root@linuxchapter14]#./ex14-5.sh./ex14-5.sh:line18:abc:commandnotfound[LINE:18]Error:Commandorfunctionexitedwithstatuscode127[LINE:20]Error:Commandorfunctionexitedwithstatuscode1#!/bin/bashtrap'echo"beforeexecuteline:$LINENO,a=$a,b=$b,c=$c"'DEBUGa=1if["$a"-eq1]thenb=2elseb=1fic=3echo"end"【例14-6】演示通過捕獲DEBUG信號來進行程序調試的方法[root@linuxchapter14]#./ex14-6.shbeforeexecuteline:7,a=,b=,c=beforeexecuteline:9,a=1,b=,c=beforeexecuteline:11,a=1,b=,c=beforeexecuteline:16,a=1,b=2,c=beforeexecuteline:18,a=1,b=2,c=3end14.2.3使用tee命令調試Shell腳本由于在實際開發過程中,管道和重定向在Shell腳本中使用得非常多。所以必須找到能夠輸出中間結果的方法。在這種情況下,tee命令就可以輕松地完成任務。tee命令會從標準輸入讀取數據,將其內容輸出到標準輸出設備,同時又可將內容保存成文件。#!/bin/bashlist=`ls-l|teelist.txt|awk'{printtoupper($9)}'`echo"$list"【例14-7】本例的功能是將當前目錄中的文件名全部轉換為大寫字母[root@linuxchapter14]#./ex14-7.sh1414141414…14.2.4使用調試鉤子調試Shell腳本在許多程序設計語言中,用戶在調試程序的時候都可以設定一個開關變量,當該變量的值為真時,才輸出調試信息;否則,不輸出調試信息。例如用戶可以設計以下代碼:if["$DEBUG"="true"];then
輸出調試信息fi只有當變量DEBUG的值為true時,才輸出調試信息。這樣的代碼塊稱為調試鉤子。#!/bin/bashexportDEBUG=trueDEBUG(){if["$DEBUG"=="true"];then$@fi}a=1DEBUGecho"a=$a"if["$a"-eq1]thenb=2elseb=1fiDEBUGecho"b=$b"c=3DEBUGecho"c=$c"【例14-8】演示使用調試鉤子調試程序的方法[root@linuxchapter14]#./ex14-8.sha=1b=2c=314.3小結本章介紹了She
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 公司組織晚餐活動方案
- 公司夢想活動方案
- 公司春節布置活動方案
- 公司組織旅行活動方案
- 公司活動秋游活動方案
- 公司紅酒品鑒活動方案
- 公司歡送儀式活動方案
- 公司系列大講堂活動方案
- 公司母親節日活動方案
- 公司水餃比賽活動方案
- 【學校心理健康教育系列】心理韌性:成為更堅韌的自己
- AI技術支持的學情分析
- 核電站sdm手冊第7章
- JGJ-130-2011建筑施工扣件式鋼管腳手架安全技術規范(新版)
- 魯東教師心理健康期末考試復習題及參考答案
- 蛋白質純化技術PPT幻燈片課件
- 企業部門人員需求申請表
- 手太陰肺經ppt課件
- 城市居住區規劃設計規范(含條文說明)
- (完整版)《普通心理學-彭聃齡》知識要點
- 借款擔保人擔保承諾書
評論
0/150
提交評論