Wil*_*lem 9 shell bash io-redirection
我用 :
exec >script.log 2>&1
Run Code Online (Sandbox Code Playgroud)
在我的脚本中将所有输出重定向到一个文件。在脚本结束时,我想在屏幕上打印一条消息。如何停止重定向?
Gil*_*il' 15
您可以exec
再次调用以恢复原始描述符。你需要把它们保存在某个地方。
exec 3>&1 4>&2 1>script.log 2>&1
… logged portion …
exec 1>&3 2>&4
echo >&2 "Done"
Run Code Online (Sandbox Code Playgroud)
在记录的部分中,您可以通过重定向到额外的描述符来将原始描述符用于一个命令。
echo "30 seconds remaining" >&3
Run Code Online (Sandbox Code Playgroud)
或者,您可以将脚本的记录部分放在复合命令中并重定向该复合命令。如果您想在该重定向部分内某处的陷阱中使用原始描述符,这将不起作用。
{
… logged portion …
} >script.log 2>&1
echo >&2 "Done"
Run Code Online (Sandbox Code Playgroud)
对 stdout 和 stderr 使用附加的 fd 3 和 4,并在脚本末尾简单地将 1 和 2 重定向到它们:
exec 3>&1 4>&2
exec >script.log 2>&1
echo "Some code"
exec >&3 2>&4
echo "Done"
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
17279 次 |
最近记录: |