一般的shell指令碼的除錯基本都是echo 來處理遇到比較大的指令碼的時候,就比較麻煩了,出了問題,還不是很好定位哪行**出問題了。
其實shell內建的一些變程式設計客棧量可以很好的解決這個問題:
$li程式設計客棧neno $funcname $bash_lineno 這幾個變數記錄了指令碼當前的執行位置,以及正在執行的函式。具體可以可以man 文件頁。
例項**:a.sh
複製** **如下:
#!/bin/bash
abc() brother: $"
}b.sh:
複製** **如下:
#!/bin/bash
../a.sh
abccdf()
執行結果:
[root@node2 ~]# ./b.sh
[code]程式設計客棧wo shi abc()
func: abc ln 5 ln2:0 brother: main
wo shi abc()func: abc ln: 5 ln2:9 brother: cdf
我在b.sh 裡寫了cdf 函式呼叫 abc 函式 ,看到輸出的差別了吧,我們可以利用這些www.cppcns.com引數列印出**出錯行的位置,以及**出錯時,是由哪個函式呼叫的,等等。。。。
本文標題: 用內建變數除錯shell指令碼的方法
本文位址:
shell內建變數
shell內部變數 shell 顯示當前系統用的shell bash 顯示bash路徑 bash subshell 提示當前subshell的層次 bash version 顯示bash版本 bash versinfo n 顯示bash安裝資訊的乙個6元素陣列,與 bash version 很像 d...
shell內建變數
特殊的shell變數 變數含義 0指令碼名 1 9 位置引數1 9 位置引數10 引數的個數 所有位置引數,加上引號後表示當做乙個字串 所有的位置引數,加上引號無影響,表示當做單個字串 獲取執行上乙個指令的執行狀態返回值 0為成功,非零為失敗 獲取當前執行shell的程序號 獲取上乙個在後台工作的程...
Shell 指令碼除錯
除錯功能是每一門程式語言都應該實現的重要特性,每個系統程式設計師都應該了解bash的除錯選項 1.使用選項 x,啟動shell指令碼的跟蹤除錯功能,將執行的每一條命令和輸出的結果輸出 test.sh檔案 bin bash foriin do echo i done echo script execu...