シェルスクリプトで簡単なログフレームワークを設定しようとしています。このために、次のように呼び出し可能な「ログ」関数を定義したいと思います。
log "LEVEL" $message
メッセージが、実行されたコマンドの出力を以前にリダイレクトした変数である場合。私の問題は、次のエラーが発生することです
{message=command 2>&3 1>&3 3>&-} >&3
log "INFO" $message
何かおかしいのではないですか?
TIA
シェルスクリプトで簡単なログフレームワークを設定しようとしています。このために、次のように呼び出し可能な「ログ」関数を定義したいと思います。
log "LEVEL" $message
メッセージが、実行されたコマンドの出力を以前にリダイレクトした変数である場合。私の問題は、次のエラーが発生することです
{message=command 2>&3 1>&3 3>&-} >&3
log "INFO" $message
何かおかしいのではないですか?
TIA
私はシェルスクリプト用のシンプルなマルチレベルロガーを開発しました。使用法、インスピレーション、または必要なものを探すことができます。
問題がログに関連していることは完全には明らかではありませんが(問題はログにテキストをキャプチャしているようですが、glenn jackmanが解決策を提案しているようです)、念のため、logger
見つかったコマンドに注意してください。ほとんどのUnixシステムでは、シェルスクリプトにシステムログを書き込む機能を提供します。さまざまなレベルと優先順位、そしてすべてがあります。とても便利な。
おそらくあなたが望む:
message=$( command 2>&1 )
log INFO "$message"
に加えて、$()
中括弧でスペースとセミコロンを使用する必要があります(必要な場合でも)。
{ command; }