在程式設計過程中難免會出錯,有的時候,除錯程式比編寫程式花費的時間還要多,shell程式同樣如此。
shell程式的除錯主要是利用bash命令解釋程式的選擇項。呼叫bash的形式是:
bash -選擇項 shell程式檔名
幾個常用的選擇項是:
-e:如果乙個命令失敗就立即退出
-n:讀入命令但是不執行它們
-u:置換時把未設定的變數看作出錯
-v:當讀入shell輸入行時把它們顯示出來
-x:執行命令時把命令和它們的引數顯示出來
上面的所有選項也可以在shell程式內部用「set -選擇項」的形式引用,而「set +選擇項」則將禁止該選擇項起作用。如果只想對程式的某一部分使用某些選擇項時,則可以將該部分用上面兩個語句包圍起來。
未置變數退出特性允許使用者對所有變數進行檢查,如果引用了乙個未賦值的變數就終止shell程式的執行。shell通常允許未置變數的使用,在這種情況下,變數的值為空。如果設定了未置變數退出選擇項,則一旦使用了未置變數就顯示錯誤資訊,並終止程式的執行。未置變數退出選擇項為「-u」。
當shell執行時,若遇到不存在或不可執行的命令、重定向失敗或命令非正常結束等情況時,如果未經重新定向,該出錯資訊會列印在終端螢幕上,而shell程式仍將繼續執行。要想在錯誤發生時迫使shell程式立即結束,可以使用「-e」選項將shell程式的執行立即終止。
除錯shell程式的主要方法是利用shell命令解釋程式的「-v」或「-x」選項來跟蹤程式的執行。
「-v」選擇項使shell在執行程式的過程中,把它讀入的每乙個命令列都顯示出來,而「-x」選擇項使shell在執行程式的過程中把它執行的每乙個命令在行首用乙個「+」加上命令名顯示出來。並把每乙個變數和該變數所取的值也顯示出來,因此,它們的主要區別在於:在執行命令列之前無「-v」則列印出命令列的原始內容,而有「-v」則列印出經過替換後的命令列的內容。
除了使用shell的「-v」和「-x」選擇項以外,還可以在shell程式內部採取一些輔助除錯的措施。
例如,可以在shell程式的一些關鍵地方使用echo命令把必要的資訊顯示出來,它的作用相當於c語言中的printf語句,這樣就可以知道程式執行到什麼地方及程式目前的狀態。
shell指令碼除錯方法
shell指令碼的三種除錯方法 n 讀一遍指令碼中的命令但不執行,用來檢查指令碼中的語法錯誤 v一邊執行指令碼,一邊將執行過的指令碼命令列印到標準輸出端 x提供跟蹤執行資訊,將執行的每一條命令和結果一次列印出來 這應該就像c語言的gdb一樣有用吧,有助於檢查錯誤 使用這些選項有三種方法 1.在命令列...
Shell指令碼的除錯方法
shell提供了一些用於除錯指令碼的選項,如下所示 n讀一遍指令碼中的命令但不執行,用於檢查指令碼中的語法錯誤 v一邊執行指令碼,一邊將執行過的指令碼命令列印到標準錯誤輸出 x提供跟蹤執行資訊,將執行的每一條命令和結果依次列印出來 使用這些選項有三種方法,一是在命令列提供引數 sh x script...
Shell指令碼的除錯方法
shell提供了一些用於除錯指令碼的選項,如下所示 n讀一遍指令碼中的命令但不執行,用於檢查指令碼中的語法錯誤 v一邊執行指令碼,一邊將執行過的指令碼命令列印到標準錯誤輸出 x提供跟蹤執行資訊,將執行的每一條命令和結果依次列印出來 使用這些選項有三種方法,一是在命令列提供引數 sh x script...