shell 指令碼除錯

2021-08-13 17:20:06 字數 2392 閱讀 4689

發表於

2016/4/27 0:03:30  

1693

人閱讀

分類: shell

除錯功能是每一門程式語言都應該實現的重要特性,每個系統程式設計師都應該了解bash的除錯選項; 

1.使用選項-x,啟動shell指令碼的跟蹤除錯功能,將執行的每一條命令和輸出的結果輸出; 

test.sh檔案   

#!/bin/bash 

foriin ;

do echo $i

done

echo "script executed"

正常執行

[pengchengxiang@localhost ~]$ bash test.sh  

1 2

… …

script executed

除錯執行 

[pengchengxiang@localhost ~]$ bash -x test.sh  

+ foriin ''

+ echo 1

1 + foriin ''

+ echo 2

2 … …

+ echo 'script executed'

script executed

2.使用set -x和set +x對指令碼進行部分除錯,將指令碼執行的每一行輸出到stdout; 

test.sh檔案 

#!/bin/bash 

foriin ;

do set -x

echo $i

set +x

done

echo "script executed"

部分除錯輸出 

[pengchengxiang@localhost ~]$ bash -x test.sh  

+ foriin ''

+ set -x

+ echo 1

1 + set +x

+ echo 2

2 … …

script executed

3.使用自定義格式顯示顯示資訊,通過傳遞_debug環境變數來建立除錯風格; 

test.sh檔案 

#!/bin/bash 

function debug()

foriin ;

do debug echo $i #可以看到執行debug函式時,可以理解為函式引數是echo $i,那麼$@就是函式引數echo $i,也就是說如果如果#[ "$_debug" == "on" ] 則 echo $i,否則 :,即啥也不做

done echo "script executed"
正常執行,不輸出debug日誌資訊 

[pengchengxiang@localhost ~]$ ./test.sh  

script executed

debug模式執行,輸出debug日誌資訊 

[pengchengxiang@localhost ~]$_debug=on ./test.sh  

1 2

3 4

5 6

script executed

4.你也可以在#!/bin/bash -xv,這樣就可以不使用任何選項就可以啟動除錯功能了; 

test.sh檔案 

#!/bin/bash -xv 

function debug()

foriin ;

do debug echo $i

done

echo "script executed"

不新增選項,直接執行 【注意:這種在/bin/bash 後指定 -xv的,只有使用./***x.sh的方式才可以看到除錯資訊,使用sh ***x.sh看不到除錯】

[pengchengxiang@localhost ~]$./test.sh  

#!/bin/bash -xv

function debug()

foriin ;

do debug echo $i

done

+ foriin ''

+ debug echo 1

+ '[' '' == on ']'

+ :

… …

echo "script executed"

+ echo 'script executed'

script executed

Shell 指令碼除錯

除錯功能是每一門程式語言都應該實現的重要特性,每個系統程式設計師都應該了解bash的除錯選項 1.使用選項 x,啟動shell指令碼的跟蹤除錯功能,將執行的每一條命令和輸出的結果輸出 test.sh檔案 bin bash foriin do echo i done echo script execu...

除錯shell指令碼

遇見莫名其妙的錯誤,先dos2uinux指令碼。echo命令是最有用的除錯指令碼工具之一。一般在可能出現問題的指令碼前後加入echo命令 使用bash命令引數進行除錯 引數 n 不會執行該指令碼,僅查詢指令碼語法是否有問題,並給出錯誤提示。v 在執行指令碼時,先將指令碼的內容輸出到螢幕上然後執行指令...

shell指令碼除錯

我們在使用unix like系統時,shell程式設計是必不可少的,在編寫shell指令碼的時候也不可避免會產生bug,所以我們就需要學習shell指令碼的除錯方法.何為直接除錯,相信大家在編寫c c 程式除錯時候都經常會在程式中加乙個printf用來輸出中間值達到除錯的效果.當然,在shell指令...