PS4 ls是什么(ps4 L)

通过扩展PS4变量,增强调试shell脚本功能

PS4:跟踪输出的前缀。

原由:

-x是set命令中的一个选项,它用来进入跟踪方式。

这样会显示出脚本执行每一条命令及其参数,它是脚本调试中的一个有用选项。

它输出的被执行的命令行及参数前面会添加一个 \"+\" 号。

实际上,这个 \"+\" 号就是内置变量 $PS4的值。

如下图:

测试脚本

执行脚本

[root@kingdom shellFile_1]# bash -x ps4_1.sh

++ wc -l

++ ls

+ count=5

+ echo 5

5

案例1:

通过此案例来增强调试shell脚本功能

#!/bin/bash

#测试脚本

#auth:odysee

echo \"如下是利用PS4变量增强脚本调试功能\"

echo \"************************\"

#简单的制造一个无此文件错误

ll err.txt

echo \"************************\"

执行脚本

这里提示在第九行出错,并给出了错误信息

如上图所示,通过-x调试给出了错误信息

但是当我们的程序代码量上升,仅仅通过这样的提示信息可能不足以来更好定位错误。

所以,下面我们用set命令的-x选项,再配合$LINENO和$FUNCNAME内置变量来跟踪错误。

$LINENO:表示脚本执行到的当前行

$FUNCTION:实际上是一个数组变量,如同堆栈,$[FUNCTION[0]} 就是要显示出当前的执行函数。

(1) 修改PS4变量

vim ~/.bash_profile

在文件中加入如下两行,(文件中还有我们自定义的PS1和PS2变量)

#增强脚本调试

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

source ~/.bash_profile

使当期文件生效。

如上图显示所示,{}实际上是执行的当前函数,但是我们脚本里没有定义函数,所以里面没有内容,大家自己自行编写一个带有函数脚本测试一下。

所以我们通过bash -x参数 、$LINENO以及$FUNCNAME变量的配合使用,可以达到在调试脚本时跟踪脚本的执行流程及轨迹,从而以达到增强调试的效果。

欢迎大家给予宝贵的意见或者建议。

欢迎大家补充或者共享一些其他的方法。

感谢支持。