控制 Linux shell 脚本中的输出

控制 Linux shell 脚本中的输出

当我在 bash 中运行 shell 脚本时,我将所有内容推送到文件中,如下所示:

./script.sh >结果.txt

我的脚本中的某些命令输出到终端,而不是文本文件。

例如,行cmd“ssh -V”输出到终端。

我该怎么做才能获取 results.txt 文件中的结果?

答案1

stderr 未重定向到文件。很可能你需要

./script.sh > results.txt 2>&1

将两者都重定向到 results.txt。请注意

./script.sh 2>&1 >results.txt

有所不同,因为它将 stdout 重定向到文件,将 stderr 重定向到非重定向的 stdout。当然,您可以替换&1为不同的文件名。

如果你使用 bash 你将摆脱

./script.sh &>results.txt

并非所有情况下,交织的 stdout/stderr 都不能保证与控制台上的顺序相同。这适用于所有内容,而不仅仅是 bash 脚本。

答案2

确保重定向全部输出到文本文件。

  • stdout>
  • stderr2>

查看更多这里这里

请注意,脚本应以以下内容开头:

#!/bin/bash 

相关内容