如果我跑
bash -x myscript.sh
我会得到调试输出.
但是如果我在myscript.sh中有一个函数,函数中的代码不受-x选项的影响.它只写输出函数的名称.
更新:
在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
输出ksh -x ./testdebug.sh是:
+ a=2 + [ 2 -eq 2 ] + echo mimi mimi + testering lili + exit
那么,对于ksh来说,有什么诀窍呢?
(如果没有答案,’正确’将转到bash-o-logist.)
使用bash,您可以在脚本中使用functrace选项
set -o functrace
有关其他调试器选项,请参阅bpage以获取bash.