bash:调试选项和功能

Flo*_*ita 9 unix debugging bash ksh function

如果我跑

bash -x myscript.sh
Run Code Online (Sandbox Code Playgroud)

我会得到调试输出.

但是如果我有一个函数myscript.sh,函数中的代码不受-x选项的影响.它只写输出函数的名称.

如何在bash脚本中获取函数的调试输出?

更新:

在ztank1013的回复之后,我才意识到我使用的是ksh,而不是bash.似乎bash默认情况下在我的系统中启用了functrace选项(感谢bash-o-logist)

我很满意,但对于社区我维持ksh的问题.

对于脚本:

#!/bin/ksh

a=2
testering(){
        a=3
        if [ $a -eq 3 ]; then
                echo lili
        fi
}
if [ $a -eq 2 ]; then
        echo mimi
fi

testering
exit
Run Code Online (Sandbox Code Playgroud)

输出ksh -x ./testdebug.sh是:

+ a=2
+ [ 2 -eq 2 ]
+ echo mimi
mimi
+ testering
lili
+ exit
Run Code Online (Sandbox Code Playgroud)

那么,对于ksh来说,有什么诀窍呢?

(如果没有答案,'正确'将转到bash-o-logist.)

bas*_*ist 10

使用bash,您可以functrace在脚本中使用选项

set -o functrace
Run Code Online (Sandbox Code Playgroud)

有关bash其他调试器选项,请参见联机帮助页.