exec 1>>(logger -s -t tagname)2>&1 1>の目的は何ですか?

exec 1>>(logger -s -t tagname)2>&1 1>の目的は何ですか?

私は偶然見つけました。

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

現在スクリプトの出力をシステムロガーにリダイレクトするために使用されます(見たことがないが確認したい場合)。https://stackoverflow.com/questions/8888251/understanding-bash-exec-12-commandシェルの知識を広げてみてください)。

1>これがなぜ必要なのか知りたいです。exec >(logger -s -t test) 2>&1失敗の理由は次のようなので、これが必要になるようです。

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

しかし、上記の質問に応じてリダイレクトで十分なので、省略は1>私が直感的に行ったことです。次に、通常どおりstderrをstdoutにリダイレクトします。exec >[some redirection target]2>&1

私はbash 4.4.19を使用しています。

ベストアンサー1

>これは必須です(代わりに単に追加で作成できます1)。これ1>>>(...) プロセスの交換(filename)のように展開され、/dev/fd/13標準>出力をそのファイルにリダイレクトします。それから> >(...)

おすすめ記事