Shell-Script
是否可以從 stdout/stderr 創建粘性重定向
考慮這樣的程式碼:
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。