ファイル記述子(例:stderr
)をbashで再定義することはできますか?bashでstdout/stderrをどのように再定義できますか?
元のstderr
とstdout
をまだ使用できるうちに、すべての出力をデフォルトでファイルに送信したいと思います。
#!/bin/bash
echo "Error: foo bar" 1>2
REAL_STDERR=2
REAL_STDOUT=1
2=open("/tmp/stderr.log")
1=open("/tmp/stdout.log")
echo "This goes to stdout.log"
if ! curl doesntexist.yet; then
echo "Error: Unable to reach host. See stderr.log for details" 1>REAL_STDERR
fi
を余談として - 小文字の名前は、アプリケーションで使用するために予約されているのに対し、すべて大文字の名前は、オペレーティングシステムに意味を持つ変数に指定したか、自分自身をシェルしています。環境変数とシェル変数が名前空間を共有していることを覚えておいてください(既存の環境変数の名前と重複するシェル変数に割り当てることは、後者を上書きします)。http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap08.html )ので、命名規則は必ず両方に適用されます。 –
ありがとう、私はそれを知らなかった。 –