実行されたコマンドからエラーメッセージをキャプチャする方法は?

実行されたコマンドからエラーメッセージをキャプチャする方法は?

私は自動化されたサーバー強化スクリプトを作成する任務を引き受けました。エラーメッセージを文字列として保存し、テキストファイルに追加したいと思います。

次のコマンドを実行するとします。

/sbin/modprobe -n -v hfsplus

私のコンピュータでこれを実行すると、結果は次のようになります。

FATAL: Module hfsplus not found

このエラーメッセージを文字列としてどのように保存できますか?どんな助けでも大変感謝します。ありがとうございます!

答え1

エラーコマンドをリダイレクトすることでこれを行うことができます。

/sbin/modprobe -n -v hfsplus 2> fileName 

スクリプトとして

#!/bin/bash
errormessage=$( /sbin/modprobe -n -v hfsplus 2>&1)
echo $errormessage

または

 #!/bin/bash
errormessage=`/sbin/modprobe -n -v hfsplus 2>&1 `
echo $errormessage

エラーを追加するには、>>代わりに使用してください。>

「予期しないトークン「&」付近の構文エラー」エラーを回避するには、2>&1代わりに使用してください。2> &1

答え2

bashスクリプトに文字列として保存するだけです。

X=`/sbin/modprobe -n -v hfsplus 2>&1`
echo $X

コマンドを実行するとメッセージが表示されるため、少し良くなる可能性があります。

TMP=$(mktemp)
/sbin/modprobe -n -v hfsplus 2>&1 | tee $TMP
OUTPUT=$(cat $TMP)
echo $OUTPUT
rm $TMP

答え3

変数にエラーメッセージを返すのは簡単です。

error=$(/sbin/modprobe -n -v hfsplus 2>&1 1>/dev/null)

echo $error

答え4

ファイルに追加するには、次のようにします。/sbin/modprobe -n -v hfsplus 2>> filename

関連情報