如何在脚本本身内重定向整个shell脚本的输出?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (26)

是否有可能将Bourne shell脚本的所有输出重定向到某个位置,在脚本本身中使用shell命令?

#!/bin/sh
if [ ! -t 0 ]; then
    # redirect all of my output to a file here
fi

# rest of script...

我也想保存和恢复整个脚本的stdout和stderr,如下所示:

# save stdout and stderr to file descriptors 3 and 4, then redirect them to "foo"
exec 3>&1 4>&2 >foo 2>&1

# ...

# restore stdout and stderr
exec 1>&3 2>&4
提问于
用户回答回答于

将stdout发送到文件

exec > file

用stderr

exec > file                                                                      
exec 2>&1

将stdout和stderr附加到文件中。

exec >> file
exec 2>&1
用户回答回答于

处理更新后的问题。

#...part of script without redirection...

{
    #...part of script with redirection...
} > file1 2>file2 # ...and others as appropriate...

#...residue of script without redirection...

扫码关注云+社区