使用多个脚本logging所有bash操作

使用下面的命令,我可以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,所以这会让你监视你的脚本的一部分。