溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Linux bash程序的調(diào)試技巧有哪些

發(fā)布時(shí)間:2021-12-24 14:01:31 來源:億速云 閱讀:196 作者:iii 欄目:系統(tǒng)運(yùn)維

這篇文章主要介紹“Linux bash程序的調(diào)試技巧有哪些”,在日常操作中,相信很多人在Linux bash程序的調(diào)試技巧有哪些問題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”Linux bash程序的調(diào)試技巧有哪些”的疑惑有所幫助!接下來,請(qǐng)跟著小編一起來學(xué)習(xí)吧!

Linux bash程序的調(diào)試

在編程過程中難免會(huì)出錯(cuò),有的時(shí)候,調(diào)試程序比編寫程序花費(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í)把它們顯示出來

-x:執(zhí)行命令時(shí)把命令和它們的參數(shù)顯示出來

上面的所有選項(xiàng)也可以在shell程序內(nèi)部用“set -選擇項(xiàng)”的形式引用,而“set +選擇項(xiàng)”則將禁止該選擇項(xiàng)起作用。如果只想對(duì)程序的某一部分使用某些選擇項(xiàng)時(shí),則可以將該部分用上面兩個(gè)語句包圍起來。

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)來跟蹤程序的執(zhí)行?!?v”選擇項(xiàng)使shell在執(zhí)行程序的過程中,把它讀入的每一個(gè)命令行都顯示出來,而“-x”選擇項(xiàng)使shell在執(zhí)行程序的過程中把它執(zhí)行的每一個(gè)命令在行首用一個(gè)“+”加上命令名顯示出來。并把每一個(gè)變量和該變量所取的值也顯示出來,因此,它們的主要區(qū)別在于:在執(zhí)行命令行之前無“-v”則打印出命令行的原始內(nèi)容,而有“-v”則打印出經(jīng)過替換后的命令行的內(nèi)容。

除了使用shell的“-v”和“-x”選擇項(xiàng)以外,還可以在shell程序內(nèi)部采取一些輔助調(diào)試的措施。例如,可以在shell程序的一些關(guān)鍵地方使用echo命令把必要的信息顯示出來,它的作用相當(dāng)于C語言中的printf語句,這樣就可以知道程序運(yùn)行到什么地方及程序目前的狀態(tài)。

Linux bash程序的內(nèi)部命令

Linux bash程序解釋程序包含了一些內(nèi)部命令。內(nèi)部命令在目錄列表時(shí)是看不見的,它們由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語句時(shí),shell讀入?yún)?shù)args,并將它們組合成一個(gè)新的命令,然后執(zhí)行。

3.exec

命令格式:exec 命令 命令參數(shù)

功能:當(dāng)shell執(zhí)行到exec語句時(shí),不會(huì)去創(chuàng)建新的子進(jìn)程,而是轉(zhuǎn)去執(zhí)行指定的命令,當(dāng)指定的命令執(zhí)行完時(shí),該進(jìn)程,也就是最初的shell就終止了,所以shell程序中exec后面的語句將不再被執(zhí)行。

4.export

命令格式:export 變量名 或:export 變量名=變量值

功能:shell可以用export把它的變量向下帶入子shell從而讓子進(jìn)程繼承父進(jìn)程中的環(huán)境變量。但子shell不能用export把它的變量向上帶入父shell。

注意:不帶任何變量名的export語句將顯示出當(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語句

功能:shift語句按如下方式重新命名所有的位置參數(shù)變量:成為,成為……在程序中每使用一次shift語句,都使所有的位置參數(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í)行文件中的所有語句。

到此,關(guān)于“Linux bash程序的調(diào)試技巧有哪些”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注億速云網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI