Hack 32. PS4 - “set -x”を使用して出力のプリフィックスをトレースする

以下に示すようにデバッグシェルスクリプトを実行する際に
PS4 シェル変数は出力するプロンプトを定義します。

PS4 を使用しないシェルスクリプトとその出力:

ramesh@dev-db ~> cat ps4.sh

set -x
echo "PS4 demo script"
ls -l /etc/ | wc -l
du -sh ~

ramesh@dev-db ~> ./ps4.sh
++ echo 'PS4 demo script'
PS4 demo script
++ ls -l /etc/
++ wc -l
243
++ du -sh /home/ramesh
48K /home/ramesh

[Note: これは set -x を使用して出力をトレースしている間、デフォルトの "++" を表示します。]

PS4 を使用したシェルスクリプトとその出力:

以下の ps4.sh で定義された PS4 は次の2つのコードがあります:
o $0 - スクリプト名を表示する
o $LINENO - スクリプト内の現在の行番号を表示する

ramesh@dev-db ~> cat ps4.sh
export PS4='$0.$LINENO+ '
set -x
echo "PS4 demo script"
ls -l /etc/ | wc -l
du -sh ~

ramesh@dev-db ~> ./ps4.sh
../ps4.sh.3+ echo 'PS4 demo script'
PS4 demo script
../ps4.sh.4+ ls -l /etc/
../ps4.sh.4+ wc -l
243
../ps4.sh.5+ du -sh /home/ramesh
48K /home/ramesh

[Note: これは set -x を使用して出力をトレースしている間、変更された "{script-name}.{line-number}+" を表示します。]