我有一个 bash 脚本myscript.sh
,里面有很多函数。要运行一个函数,我会写
source myscript.sh; myfunction
如何调试这样的功能?
答案1
只需在要调试的部分之前添加这些行即可。
set -v -x -e
并禁用它。
set +v +x +e
答案2
在脚本中启用调试并使用functrace
.
set -x
set -o functrace
答案3
您还应该能够在 Bash 中使用:
$ set -xT
这使得函数跟踪和
$ set +xT
禁用。
另外,参考另一个发布的答案,我不建议使用 -v 进行调试(详细模式),除非您正在检查脚本/shell 命令集的语法。有时有用的另一种(通用)解决方案是-n
结合使用该选项-x
。这将“运行”脚本/命令,而无需实际执行运行命令的最后一步。这通常可以让您在 shell 扩展等中发现困难的错误,而不会造成不必要的混乱。