Linux - 将输出的一部分重定向到文件

时间:2014-04-09 07:52:09

标签: linux bash shell redirect exec

我们可以使用EXEC命令将所有STDOUT和STDERR重定向到.log文件,如:

#!/bin/bash
exec 1> record.log 2>&1
echo begin redirecting

# from the script above, 'begin redirecting' will be redirected to record.log
# then we want to disable the redirecting and restore the STDOUT&STDERR     

echo return to STDOUT and STDERR

# here 'return to STDOUT and STDERR' will be print out

有没有人知道如何禁用重定向(STDOUT和STDERR)? 通过这种方式,我们可以使用exec命令将部分输出重定向到文件。 非常感谢你。

2 个答案:

答案 0 :(得分:1)

你可以这样做:

#!/bin/bash

# Link file descriptor #6 with stdout/stderr
exec 6>&1 2>&1

exec 1> record.log 2>&1
echo begin redirecting

# restore and close file descriptor #6
exec 1>&6 2>&1 6>&-

# from the script above, 'begin redirecting' will be redirected to record.log
# then we want to disable the redirecting and restore the STDOUT&STDERR     

echo return to STDOUT and STDERR

答案 1 :(得分:0)

为什么不用子shell限制重定向的范围? E.g。

#!/bin/bash

(
    exec 1> record.log 2>&1
    echo begin redirecting

)

echo This goes to stdout

如果在内部范围中设置变量,则可能会出现问题。取决于您的计划的结构。