3

シェルスクリプトで簡単なログフレームワークを設定しようとしています。このために、次のように呼び出し可能な「ログ」関数を定義したいと思います。

log "LEVEL" $message

メッセージが、実行されたコマンドの出力を以前にリダイレクトした変数である場合。私の問題は、次のエラーが発生することです

{message=command 2>&3 1>&3 3>&-} >&3
log "INFO" $message

何かおかしいのではないですか?

TIA

4

4 に答える 4

3

私はシェルスクリプト用のシンプルなマルチレベルロガーを開発しました。使用法、インスピレーション、または必要なものを探すことができます。

于 2012-06-09T11:05:55.933 に答える
1

問題がログに関連していることは完全には明らかではありませんが(問題はログにテキストをキャプチャしているようですが、glenn jackmanが解決策を提案しているようです)、念のため、logger見つかったコマンドに注意してください。ほとんどのUnixシステムでは、シェルスクリプトにシステムログを書き込む機能を提供します。さまざまなレベルと優先順位、そしてすべてがあります。とても便利な。

于 2010-06-08T22:49:34.860 に答える
1

おそらくあなたが望む:

message=$( command 2>&1 )
log INFO "$message"
于 2010-06-08T18:05:57.687 に答える
0

に加えて、$()中括弧でスペースとセミコロンを使用する必要があります(必要な場合でも)。

{ command; }
于 2010-06-08T19:03:02.367 に答える