gpt4 book ai didi

linux - 执行bash脚本时如何显示行号

转载 作者:IT老高 更新时间:2023-10-28 12:29:38 25 4
gpt4 key购买 nike

我有一个测试脚本,它有很多命令并且会产生很多输出,我使用 set -xset -vset - e,所以脚本会在发生错误时停止。但是,为了定位问题,我仍然很难找到执行停止的哪一行。有没有一种方法可以在每行执行之前输出脚本的行号?或者输出set -x生成的命令展示前的行号?或者任何可以处理我的脚本行位置问题的方法都会有很大帮助。谢谢。

最佳答案

您提到您已经在使用 -x。变量 PS4 表示该值是在设置 -x 选项时回显命令行之前打印的提示,默认为 : 后跟空间。

您可以更改 PS4 以发出 LINENO(当前正在执行的脚本或 shell 函数中的行号)。

例如,如果您的脚本显示为:

$ cat script
foo=10
echo ${foo}
echo $((2 + 2))

因此执行它会打印行号:

$ PS4='Line ${LINENO}: ' bash -x script
Line 1: foo=10
Line 2: echo 10
10
Line 3: echo 4
4

http://wiki.bash-hackers.org/scripting/debuggingtips提供终极的 PS4,它会输出您可能需要的所有追踪信息:

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

关于linux - 执行bash脚本时如何显示行号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17804007/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com