用內建變數除錯shell指令碼的方法

2022-09-26 17:09:16 字數 687 閱讀 1183

一般的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...