shell 脚本传入数组变量_通过扩展PS4变量,增强调试shell脚本功能

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

PS4:跟踪输出的前缀。

原由:

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

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

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

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

如下图:

c7fba8cf9787d933b41b69226f14f097.png

测试脚本

c3ca22a865c47fdd0153f36d4b3628cc.png

执行脚本

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

++ wc -l

++ ls

+ count=5

+ echo 5

5

cdbf6ab777e19b30c8a25da95651bce2.png

案例1:

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

#!/bin/bash

#测试脚本

#auth:odysee

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

echo "************************"

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

ll err.txt

echo "************************"

395f607ff2a5edbc614a957d69d62426.png

执行脚本

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

cb9a07f1f78c754b66ba22173f70b4ce.png

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

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

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

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

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

(1) 修改PS4变量

vim ~/.bash_profile

7d10280a5b7231fc65f1610cb9d4ff4c.png

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

#增强脚本调试

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

3292d72bfb804e6a8b4b682c162243e7.png

source ~/.bash_profile

使当期文件生效。

51e126298ee735147917072647f541b6.png

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

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

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

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

感谢支持。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值