使用下面的命令,我可以记录该脚本中发生的所有操作。
bash -x script.sh
遗憾的是,该脚本调用了另一个脚本,但该脚本没有-x
激活该设置,即子脚本不会继承该设置。
那么,有没有办法set -x
为所有后续脚本激活?
答案1
如果您没有编写子脚本并且无法控制其内容,那么可能无法在此处执行您想要的操作。您可以通过直接调用脚本来深入了解所调用的脚本,而bash -x <scriptname>
不是依赖其可执行位。
如果您确实可以控制内容,请考虑使用环境变量来指示何时需要额外的跟踪并执行以下操作:
在您的环境中或.bashrc
export MYAPP_LOGGING="on"
然后在脚本顶部添加类似以下内容:
test "$MYAPP_LOGGING" && set -x
然后,MYAPP_LOGGING 的任何非空值都会打开跟踪。 unset MYAPP_LOGGING
则会将其关闭。
还值得注意的是:您可以使用 关闭日志记录set +x
,这样您就可以仅监控脚本的部分内容。