一、簡(jiǎn)介
本文全面系統(tǒng)地介紹了shell腳本調(diào)試技術(shù),包括使用echo, tee, trap等命令輸出關(guān)鍵信息,跟蹤變量的值,在腳本中植入調(diào)試鉤子,使用“-n”選項(xiàng)進(jìn)行shell腳本的語(yǔ)法檢查, 使用“-x”選項(xiàng)實(shí)現(xiàn)shell腳本逐條語(yǔ)句的跟蹤,巧妙地利用shell的內(nèi)置變量增強(qiáng)“-x”選項(xiàng)的輸出信息等,
Shell 調(diào)試
。二、shell調(diào)試選項(xiàng)
1)只讀取shell腳本,不實(shí)際執(zhí)行,用于檢測(cè)shell腳本是否存在語(yǔ)法錯(cuò)誤
-n
2)使shell解釋器從一個(gè)字符串中讀取并執(zhí)行shell指令,用于臨時(shí)測(cè)試小段腳本
-c "string"
3)進(jìn)入跟蹤方式,使shell在執(zhí)行腳本的過(guò)程中把它實(shí)際執(zhí)行的每一個(gè)命令行顯示出來(lái),并且在行首顯示一個(gè)"+"號(hào)
-x
示例:
$ sh –x exp2.sh+ trap 'echo "before execute line:$LINENO, a=$a,b=$b,c=$c"' DEBUG++ echo 'before execute line:3, a=,b=,c='before execute line:3, a=,b=,c=+ a=1++ echo 'before execute line:4, a=1,b=,c='before execute line:4, a=1,b=,c=+ '[' 1 -eq 1 ']'++ echo 'before execute line:6, a=1,b=,c='before execute line:6, a=1,b=,c=+ b=2++ echo 'before execute line:10, a=1,b=2,c='before execute line:10, a=1,b=2,c=+ c=3++ echo 'before execute line:11, a=1,b=2,c=3'before execute line:11, a=1,b=2,c=3+ echo endend
三、shell調(diào)試工具:bashdb
http://bashdb.sourceforge.net/