shell调试

本文介绍了使用Shell脚本调试的几种方法,包括使用-n检查语法错误,-x跟踪执行过程,以及利用PS4变量显示详细执行信息。了解这些技巧将帮助开发者更高效地定位和解决问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

shell脚本——调试(-n / -x / + / ++ )

-n 只读取shell脚本,但不实际执行 "-n"可用于测试shell脚本是否存在语法错误,但不会实际执行命令。 -x 进入跟踪方式,显示所执行的每一条命令 "-x"选项可用来跟踪脚本的执行,是调试shell脚本的强有力工具。 -v 显示所有行,详细模式

sh -n file.sh
# 检查脚本中的语法错误,并显示行号
export PS4='+[$LINENO]'    /   export PS4='+{$LINENO:${FUNCNAME[0]}} '
#这个变量加入到.bash_profile中,在进行代码调试时,会显示行号(无函数时,一般用前者)
set -x     #启动debug模式
set +x    #关闭debug模式
sh -x file.sh   #进行脚本调试(debug)
+号行:  shell脚本实际执行的命令
++ 号行: 执行trap机制中指定的命令
其它的行则是输出信息

补充: $LINENO 代表shell脚本的当前行号,类似于C语言中的内置宏__LINE__

\(FUNCNAME 函数的名字,类似于C语言中的内置宏__func__,但宏__func__只能代表当前所在的函数名,而\) FUNCNAME的功能更强大,它是一个数组变量,其中包含了整个调用链上所有的函数的名字,故变量\({FUNCNAME[0]}代表shell脚本当前正在执行的函数的名字,而变量\){FUNCNAME[1]}则代表调用函数${FUNCNAME[0]}的函数的名字,余者可以依此类推。

转载于:https://www.cnblogs.com/suixingc/p/shell-diao-shi.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值