shell调试
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]}的函数的名字,余者可以依此类推。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战