Bash

exec 1> >(logger -s -t tagname) 2>&1 中的 1> 的目的是什麼?

  • December 28, 2018

我剛剛跌跌撞撞

exec 1> >(logger -s -t $(basename $0)) 2>&1

用於將目前腳本的輸出重定向到系統記錄器(如果您從未見過,但有興趣查看https://stackoverflow.com/questions/8888251/understanding-bash-exec-12-命令來拓寬你的 shell 知識)。

我想知道為什麼這1>是必要的。這似乎是必要的,因為exec >(logger -s -t test) 2>&1失敗是由於

bash: /dev/fd/63: Permission denied
bash: exec: /dev/fd/63: cannot execute: Permission denied

然而,省略1>是我直覺上會做的事情,因為exec >[some redirection target]根據上面連結的問題,重定向已經足夠了。2>&1然後像往常一樣將標準錯誤重定向到標準輸出。

我正在使用 bash 4.4.19。

它是必要的(額外的>,而不是11>可以簡單地寫成>)。>(...) 程序替換將擴展為/dev/fd/13(文件名),然後>將標準輸出重定向到其中。從此> >(...)

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