我有一个脚本,它会发出很多命令。我希望将此脚本的输出(错误和标准输出)保存到文件中,但我还希望将实际执行的命令也保存到文件中(如 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) 的顶部...这会导致两个流都被重定向到您的输出文件。