我可以find哪个脚本输出哪个错误?

有一个脚本调用其他脚本,他们叫别人…我不知道究竟哪个脚本被调用,其中有多less。 我只知道,其中一些正在添加iptables规则,当我调用根脚本时,我得到这个错误。

iptables: No chain/target/match by that name. iptables: No chain/target/match by that name. 

我的问题是,我无法find哪个脚本输出这个错误。 有什么方法或工具可以学习吗?

您可以使用bash -x跟踪一系列脚本的执行情况

 bash -x /path/to/your/script 

从这里你可以找出哪些脚本正在被调用。 您可以使用-e开关强制脚本提前中止

 bash -e -x /path/to/your/script 

这可以节省你不得不通过大量的输出

您可以简单地将执行脚本的stdout和sterrredirect到一个文件。 每个脚本输出可以被定向到一个单独的文件。 在这种情况下,您可以查看这些文件并检查哪个脚本返回了错误。

要redirect输出,可以使用:

 /path/to/script > /path/to/logfile.log 

要redirectstdout和stderr,可以使用:

 /path/to/script > /path/to/logfile.log 2>&1 

您可以使用>>replace>以附加到文件,而不是每次都截断它。