Shell-Script

是否可以從 stdout/stderr 創建粘性重定向

  • August 21, 2013

考慮這樣的程式碼:

echo hello >> log.txt
echo world >> log.txt

我使用標準輸出重定向執行命令。是否可以創建粘性重定向?像這樣的東西:

redir stdout log.txt
echo hello
echo world
stop-redir

這相當於第一段程式碼。

我真正需要的——為stdout和stderr(同時)進行這種粘性重定向,執行一些命令,停止重定向,並讀取日誌文件。

exec 3>&1 4>&2 >log.txt 2>&1
echo hello
echo world
exec 1>&3 2>&4
less log.txt

即:將文件描述符3和4複製目前的1(stdout)和2(stderr),將1重定向到log.txt,將2重定向到與1相同;然後執行命令;然後從文件描述符 3 和 4 中保存的值恢復 stdout 和 stderr。

引用自:https://unix.stackexchange.com/questions/87602