共計(jì) 2185 個(gè)字符,預(yù)計(jì)需要花費(fèi) 6 分鐘才能閱讀完成。
這篇文章主要介紹“Linux bash 程序的調(diào)試技巧有哪些”,在日常操作中,相信很多人在 Linux bash 程序的調(diào)試技巧有哪些問(wèn)題上存在疑惑,丸趣 TV 小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”Linux bash 程序的調(diào)試技巧有哪些”的疑惑有所幫助!接下來(lái),請(qǐng)跟著丸趣 TV 小編一起來(lái)學(xué)習(xí)吧!
Linux bash 程序的調(diào)試
在編程過(guò)程中難免會(huì)出錯(cuò),有的時(shí)候,調(diào)試程序比編寫(xiě)程序花費(fèi)的時(shí)間還要多,shell 程序同樣如此。
shell 程序的調(diào)試主要是利用 bash 命令解釋程序的選擇項(xiàng)。調(diào)用 bash 的形式是:
bash - 選擇項(xiàng) shell 程序文件名
幾個(gè)常用的選擇項(xiàng)是:
-e:如果一個(gè)命令失敗就立即退出
-n:讀入命令但是不執(zhí)行它們
-u:置換時(shí)把未設(shè)置的變量看作出錯(cuò)
-v:當(dāng)讀入 shell 輸入行時(shí)把它們顯示出來(lái)
-x:執(zhí)行命令時(shí)把命令和它們的參數(shù)顯示出來(lái)
上面的所有選項(xiàng)也可以在 shell 程序內(nèi)部用“set - 選擇項(xiàng)”的形式引用,而“set + 選擇項(xiàng)”則將禁止該選擇項(xiàng)起作用。如果只想對(duì)程序的某一部分使用某些選擇項(xiàng)時(shí),則可以將該部分用上面兩個(gè)語(yǔ)句包圍起來(lái)。
1. 未置變量退出和立即退出
未置變量退出特性允許用戶對(duì)所有變量進(jìn)行檢查,如果引用了一個(gè)未賦值的變量就終止 shell 程序的執(zhí)行。shell 通常允許未置變量的使用,在這種情況下,變量的值為空。如果設(shè)置了未置變量退出選擇項(xiàng),則一旦使用了未置變量就顯示錯(cuò)誤信息,并終止程序的運(yùn)行。未置變量退出選擇項(xiàng)為“-u”。
當(dāng) shell 運(yùn)行時(shí),若遇到不存在或不可執(zhí)行的命令、重定向失敗或命令非正常結(jié)束等情況時(shí),如果未經(jīng)重新定向,該出錯(cuò)信息會(huì)打印在終端屏幕上,而 shell 程序仍將繼續(xù)執(zhí)行。要想在錯(cuò)誤發(fā)生時(shí)迫使 shell 程序立即結(jié)束,可以使用“-e”選項(xiàng)將 shell 程序的執(zhí)行立即終止。
2.shell 程序的跟蹤
調(diào)試 shell 程序的主要方法是利用 shell 命令解釋程序的“-v”或“-x”選項(xiàng)來(lái)跟蹤程序的執(zhí)行。“-v”選擇項(xiàng)使 shell 在執(zhí)行程序的過(guò)程中,把它讀入的每一個(gè)命令行都顯示出來(lái),而“-x”選擇項(xiàng)使 shell 在執(zhí)行程序的過(guò)程中把它執(zhí)行的每一個(gè)命令在行首用一個(gè)“+”加上命令名顯示出來(lái)。并把每一個(gè)變量和該變量所取的值也顯示出來(lái),因此,它們的主要區(qū)別在于:在執(zhí)行命令行之前無(wú)“-v”則打印出命令行的原始內(nèi)容,而有“-v”則打印出經(jīng)過(guò)替換后的命令行的內(nèi)容。
除了使用 shell 的“-v”和“-x”選擇項(xiàng)以外,還可以在 shell 程序內(nèi)部采取一些輔助調(diào)試的措施。例如,可以在 shell 程序的一些關(guān)鍵地方使用 echo 命令把必要的信息顯示出來(lái),它的作用相當(dāng)于 C 語(yǔ)言中的 printf 語(yǔ)句,這樣就可以知道程序運(yùn)行到什么地方及程序目前的狀態(tài)。
Linux bash 程序的內(nèi)部命令
Linux bash 程序解釋程序包含了一些內(nèi)部命令。內(nèi)部命令在目錄列表時(shí)是看不見(jiàn)的,它們由 shell 本身提供。常用的內(nèi)部命令有:echo、eval、exec、export、readonly、read、shift、wait 和點(diǎn) (.)。下面簡(jiǎn)單介紹其命令格式和功能。
1.echo
命令格式:echo arg
功能:在屏幕上打印出由 arg 指定的字符串。
2.eval
命令格式:eval args
功能:當(dāng) shell 程序執(zhí)行到 eval 語(yǔ)句時(shí),shell 讀入?yún)?shù) args,并將它們組合成一個(gè)新的命令,然后執(zhí)行。
3.exec
命令格式:exec 命令 命令參數(shù)
功能:當(dāng) shell 執(zhí)行到 exec 語(yǔ)句時(shí),不會(huì)去創(chuàng)建新的子進(jìn)程,而是轉(zhuǎn)去執(zhí)行指定的命令,當(dāng)指定的命令執(zhí)行完時(shí),該進(jìn)程,也就是最初的 shell 就終止了,所以 shell 程序中 exec 后面的語(yǔ)句將不再被執(zhí)行。
4.export
命令格式:export 變量名 或:export 變量名 = 變量值
功能:shell 可以用 export 把它的變量向下帶入子 shell 從而讓子進(jìn)程繼承父進(jìn)程中的環(huán)境變量。但子 shell 不能用 export 把它的變量向上帶入父 shell。
注意:不帶任何變量名的 export 語(yǔ)句將顯示出當(dāng)前所有的 export 變量。
5.readonly
命令格式:readonly 變量名
功能:將一個(gè)用戶定義的 shell 變量標(biāo)識(shí)為不可變的。不帶任何參數(shù)的 readonly 命令將顯示出所有只讀的 shell 變量。
6.read
命令格式:
read 變量名表
功能:從標(biāo)準(zhǔn)輸入設(shè)備讀入一行,分解成若干字,賦值給 shell 程序內(nèi)部定義的變量。
7.shift 語(yǔ)句
功能:shift 語(yǔ)句按如下方式重新命名所有的位置參數(shù)變量:成為,成為 hellip; hellip; 在程序中每使用一次 shift 語(yǔ)句,都使所有的位置參數(shù)依次向左移動(dòng)一個(gè)位置,并使位置參數(shù)“$#”減一,直到減到 0。
8.wait
功能:是 shell 等待在后臺(tái)啟動(dòng)的所有子進(jìn)程結(jié)束。Wait 的返回值總是真。
9.exit
功能:退出 shell 程序。在 exit 之后可有選擇地指定一個(gè)數(shù)字作為返回狀態(tài)。
10.“.”(點(diǎn))
命令格式:. Shell 程序文件名
功能:使 shell 讀入指定的 shell 程序文件并依次執(zhí)行文件中的所有語(yǔ)句。
到此,關(guān)于“Linux bash 程序的調(diào)試技巧有哪些”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注丸趣 TV 網(wǎng)站,丸趣 TV 小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!