shell腳本——調試(-n / -x / + / ++ )
-n 只讀取shell腳本,但不實際執行 "-n"可用於測試shell腳本是否存在語法錯誤,但不會實際執行命令。 -x 進入跟蹤方式,顯示所執行的每一條命令 "-x"選項可用來跟蹤腳本的執行,是調試shell腳本的強有力工具。 -v 顯示所有行,詳細模式
sh -n file.sh
# 檢查腳本中的語法錯誤,並顯示行號
export PS4='+[$LINENO]' / export PS4='+{$LINENO:${FUNCNAME[0]}} '
#這個變量加入到.bash_profile中,在進行代碼調試時,會顯示行號(無函數時,一般用前者)
set -x #啟動debug模式
set +x #關閉debug模式
sh -x file.sh #進行腳本調試(debug)
+號行: shell腳本實際執行的命令
++ 號行: 執行trap機制中指定的命令
其它的行則是輸出信息
補充: $LINENO 代表shell腳本的當前行號,類似於C語言中的內置宏__LINE__
\(FUNCNAME 函數的名字,類似於C語言中的內置宏__func__,但宏__func__只能代表當前所在的函數名,而\) FUNCNAME的功能更強大,它是一個數組變量,其中包含了整個調用鏈上所有的函數的名字,故變量\({FUNCNAME[0]}代表shell腳本當前正在執行的函數的名字,而變量\){FUNCNAME[1]}則代表調用函數${FUNCNAME[0]}的函數的名字,余者可以依此類推。