使用下面的命令,我可以logging脚本中发生的所有操作。
bash -x script.sh
不幸的是,脚本调用另一个脚本,它没有活动的-x设置,即该设置不被子脚本inheritance。
那么,有没有办法为所有后续脚本激活set -x ?
如果你没有写出孩子的脚本,并且无法控制那里的内容,那么在这里可能没有办法做你想做的事情。 通过使用bash -x <scriptname>调用它们,而不是依赖它们的可执行位,可以深入了解直接调用的脚本。
如果您确实拥有对内容的控制权,请考虑使用环境variables来指示何时需要附加跟踪,并执行如下操作:
在你的环境或.bashrc
export MYAPP_LOGGING="on"
然后在脚本的顶部添加如下内容:
test "$MYAPP_LOGGING" && set -x
然后,MYAPP_LOGGING的任何非空值将打开跟踪。 unset MYAPP_LOGGING会closures它。
另外值得注意的是:你可以用set +x来closures日志logging,所以这会让你监视你的脚本的一部分。