【发布时间】:2012-10-26 03:27:12
【问题描述】:
让我们考虑一下 shell 脚本中有许多系统命令,每个命令都将一些内容返回到 stdout 或 stderr。
有没有办法将所有从 shell 脚本生成的 stdout 或 stderr 重定向到日志文件,而不是分别对每个命令执行重定向?
【问题讨论】:
标签: shell io-redirection redirectstandardoutput
让我们考虑一下 shell 脚本中有许多系统命令,每个命令都将一些内容返回到 stdout 或 stderr。
有没有办法将所有从 shell 脚本生成的 stdout 或 stderr 重定向到日志文件,而不是分别对每个命令执行重定向?
【问题讨论】:
标签: shell io-redirection redirectstandardoutput
显然简单的解决方案是使用
./scriptfile.sh > foo.log
因此,使用脚本文件生成的所有标准输出都会转到 foo.log
但是,我想您的问题是针对一个可以使用脚本的解决方案。 您可以使用 exec 命令(重新)将文件描述符定向到给定文件(以下 sn-p 中的第 2 行会将 stdout 重定向到 foo.log):
#!/bin/sh
exec 1>>foo.log
echo blue
echo blart
【讨论】:
exec 1>>foo.log) 是从 autoconf 生成的 configure 中无耻地窃取的......