Shell 調試腳本 簡介

Shell 腳本調試的主要工作是發現腳本的錯誤的原因,以及定位腳本中發生錯誤的行。Bash 提供了多種腳本調試的功能。但是比較常用的是使用 Bash 的 -x 選項啟動一個子 Shell,它將以調試模式運行整個腳本,使 Shell 在執行腳本的過程中把實際執行的每一個命令行顯示出來,并且在命令行的行首顯示一個 “+” 號,“+” 號后面顯示的是經過了參數擴展的命令行的內容。這將有助于分析實際執行的是什么命令。

Bash 的執行選項還可以在腳本中通過 let 命令來指定。“set -選項”表示啟動某選項,“set +選項”表示關閉某選項。所以我們可以在 Shell 腳本中使用 “set -x” 和 “set +x” 命令來調試腳本中的某一段代碼。

Bash 中還有一個 “-v” 選項,該選項將激活詳細輸出模式,在這一模式中,由 Bash 讀入的每一行命令都將在執行前被打印,包括注釋行。

定制輸出信息
$LINENO —— Bash 內部環境變量,表示 Shell 腳本的當前行號。
$FUNCNAME —— Bash 內部環境變量,它是一個包含了當前在執行調用堆棧中的所有 Shell 函數名稱的數組變量。${FUNCNAME[0]} 代表當前正在執行的 Shell 函數的名稱,${FUNCNAME[1]} 則代表調用函數
${FUNCNAME[0]} 的函數的名字,依次類推。
$PS4 —— Bash 內部環境變量,在使用 Bash 的 -x 選項時,每一條實際執行的命令的行首會顯示一個 “+” 號,這個 “+” 號其實就是變量 $PS4 的默認值。

利用 $PS4 變量,再結合 $LINENO$FUNCNAME 兩個內部變量,通過重新定義變量 $PS4,可以增強 -x 選項的輸出信息。我們可以在執行腳本之前先執行下面的語句:

export PS4=`+{$LINENO:${FUNCNAME[0]}}`

使用示例:


定制輸出信息

Bash 中還有一個執行選項 -n,他可以用于測試 Shell 腳本中是否存在語法錯誤,它會讀取腳本中的命令行但是不會執行它們。

本文參考自 《Linux Shell命令行及腳本編程實例詳解

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 本文全面系統地介紹了shell腳本調試技術,包括使用echo, tee, trap等命令輸出關鍵信息,跟蹤變量的值...
    liuzg0734閱讀 925評論 0 14
  • 二. 在shell腳本中輸出調試信息 通過在程序中加入調試語句把一些關鍵地方或出錯的地方的相關信息顯示出來是最常見...
    很少更新了閱讀 828評論 0 1
  • linux資料總章2.1 1.0寫的不好抱歉 但是2.0已經改了很多 但是錯誤還是無法避免 以后資料會慢慢更新 大...
    數據革命閱讀 12,237評論 2 33
  • 第一節 Shell概述 1.Shell是什么 Shell是一個命令行解釋器,它為用戶提供了一個向Linux內核發送...
    littlexjing閱讀 1,985評論 0 1
  • Ubuntu的發音 Ubuntu,源于非洲祖魯人和科薩人的語言,發作 oo-boon-too 的音。了解發音是有意...
    螢火蟲de夢閱讀 99,584評論 9 467