しばらく前にスクリプトを作成し、その周りにログを追加しましたが、ログのリダイレクトがどのように機能するか忘れました:-(
その要点は次のとおりです。
#!/bin/bash
LOGFILE=/some/path/mylogfile
(
# here go my commands which produce some stdout
# and, if something goes wrong, also some stderr
) 1>>${LOGFILE} 2> >( tee -a ${LOGFILE} >&2 )
スクリプトを実行すると、には何もstdout
出力されず、に進むもののみが出力されstderr
ます。ログファイルは${LOGFILE}
、stdoutとstderrの両方をキャプチャします。
スクリプトを実行し、端末に出力がない場合、すべてが正常であることがわかります。出力がある場合、何か問題が発生したことがわかります。ログファイルを確認して、問題の内容を確認できます。
今私を困惑させるリダイレクトの部分は、次の構文です: 2> >( some command )
誰もがそこで何が起こっているのか説明できますか?
echo <(date)
と、置換されたファイルの名前が表示されます:/dev/fd/63
。を実行するcat <(date)
と、日付、つまり置換されたファイルのコンテンツが表示されますFri Nov 18 14:11:09 NZDT 2016
。