Hack 32. PS4 – Used by “set -x” to prefix tracing output
by Ramesh
The PS4 shell variable defines the prompt that gets displayed, when you execute a shell script in debug mode as shown below.
Shell script and output WITHOUT 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: This displays the default "++" while tracing the output using set -x]
Shell script and output WITH PS4:
The PS4 defined below in the ps4.sh has the following two codes:
- $0 – indicates the name of script
- $LINENO – displays the current line number within the script
- 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: This displays the modified "{script-name}.{line-number}+" while tracing the output using set -x]
当前内容版权归 Ramesh Natarajan 或其关联方所有,如需对内容或内容相关联开源项目进行关注与资助,请访问 Ramesh Natarajan .