我想将脚本的一些输出重定向到文件。
REDIRECT_FILE="foo.txt"
echo to console
# starting redirect
exec > $REDIRECT_FILE
echo to file
echo ...
echo ...
# stop redirect
exec >&-
echo end of script
“脚本结束”应该写入标准输出。但出现了“错误文件描述符”错误消息。
exec 1>&-
也不起作用。
停止重定向的正确术语是什么?
答案1
关闭exec 1>&-
标准输出。它不会将其恢复为原始值,因为您已经将其替换为exec > $REDIRECT_FILE
(这应该是exec > "$REDIRECT_FILE"
为了保护变量的值免受 shell 的任何进一步处理)。
恢复标准输出您需要保存它的原始值
exec 3>&1 # Save stdout as FD 3
exec 1>"$REDIRECT_FILE" # Redirect stdout to a file
…
exec 1>&3 # Revert stdout to its original value