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
其他调试器选项,请参见联机帮助页.