Bash -x 到文件和电子邮件

Bash -x 到文件和电子邮件

我有一个脚本,它会发出很多命令。我希望将此脚本的输出(错误和标准输出)保存到文件中,但我还希望将实际执行的命令也保存到文件中(如 bash -x 所示)

我试过了:

bash -x 脚本.sh > log.txt

无济于事

任何帮助都值得感激。谢谢

答案1

我已经测试了以下内容,它给出了您正在寻找的内容,下面的命令将把 stdout/stderror 记录到文件 output.txt

bash -x 脚本.sh &> 输出.txt

桑迪普

答案2

我认为您的问题是“bash -x”的输出被发送到 stderr,而您的脚本的输出被发送到 stdout。

当你执行:

   bash -x script.sh > output.txt

...脚本的正常输出被发送到重定向文件,并且脚本命令(来自 -x)继续显示在您的终端屏幕上。

为了将 stderr 和 stdout 发送到同一个流,您需要将一个复制到另一个之上。这可以使用 shell 文件描述符重复语法“例如 2>&1”)来完成,如下所示:

   bash -x script.sh > output.txt 2>&1

此语法将文件描述符 #2 (stderr) 复制到文件描述符 #1 (stdout) 的顶部...这会导致两个流都被重定向到您的输出文件。

相关内容