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

我使用的测试脚本包含很多命令,并且会生成大量输出,我使用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]}(): }'

以上是 执行bash脚本时如何显示行号 的全部内容, 来源链接: utcz.com/qa/434071.html

回到顶部