我们可以使用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命令将部分输出重定向到文件。 非常感谢你。
答案 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
如果在内部范围中设置变量,则可能会出现问题。取决于您的计划的结构。