- - PR -
シェルスクリプト 標準エラーのリダイレクト
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2002-11-29 15:11
通常、
#Comand 2 >> filename で標準エラーがfilenameへ追加され、内容は #cat filename エラーの内容 となっております。 これを #cat filename エラーの内容 システム日付 というようにスペースもしくはタブで区切られた一行のレコードとして出力したいと思います。 こうするための、シェルスクリプトのうまい書き方はないでしょうか。ご教授願います。 |
|
投稿日時: 2002-11-29 22:07
command 2>&1 1>&- |while read LOG; do echo "$LOG : `date `";done
|
|
投稿日時: 2002-11-29 22:07
しまった。ファイルに出すの忘れた
command 2>&1 1>&- |while read LOG; do echo "$LOG : `date `" >> filename;done |
|
投稿日時: 2002-12-02 08:29
ご返答ありがとうございます。すみません、知識不足で全て解読できません。。次の解釈で間違いないのでしょうか。。
command 2>&1 →エラーを標準入力と同じところに出力する。 1>&- |while read LOG; do echo "$LOG : `date `" >> filename;done →どこで分けて考えればよろしいでしょうか。。「-」は何を意味しておりますでしょうか。 |
|
投稿日時: 2002-12-02 10:26
command 2>&1 1>&- <BR>
で、標準出力 (ファイルデスクリプタ1)を閉じて、標準エラー出力(ファイルデスクリプタ2)を標準出力にあてがっている。つまり、もとの標準出力に出ていたものは無くなって、標準エラーに出ていたものが標準出力として出力されるようになっている。 <BR> |while read LOG; do echo "$LOG : `date `" >> filename;done <BR> これは、パイプ(”|”)で前のコマンドの標準出力を受け取って、1行ごと読み取り、変数LOGに入れ、その変数に、dateコマンドの出力を加えてファイルに出力してる。 |
|
投稿日時: 2002-12-02 11:20
ご返答ありがとうございます。ファイルディスクリプタとはファイル記述子と同じことでしょうか。。
ご返信ありがとうございました。またよろしくお願い申し上げます。 |
1