当我在 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 脚本。