HOWTO · Bash
Bash で stderr にエコー
このチュートリアルでは、Bash で stderr にエコーする方法について説明します。
このページの内容
デフォルトのエラー メッセージ変数の組み込み Bash スクリプトは、stderr として知られています。 これは標準エラーとも呼ばれ、エラーのデフォルトの出力デバイスです。
場合によっては、エラーを出力チャネルにリダイレクトする必要があります。 Linux 環境は、FD として知られる説明ですべてのファイル オブジェクトを識別します。
開いているファイル セッションを識別する正の整数値です。 stderr の場合、ファイル記述子の値は 2 です。
この記事では、stderr とその機能について学習します。 また、トピックを簡単にするいくつかの例を見ていきます。
Bash で stderr にエコーする
コマンド stderr は、主にコマンドの実行中にエラーの再コードを保持するために使用されます。 このコマンドの一般的な構文は次のとおりです。
Your command here 2>error.log
上記のサンプル構文では、シンボル 2> と error.log という名前のファイルを見つけることができます。 2> は FILE DESCRIPTOR の値を示し、これは stderr の ID を表します。
この場合、FILE DESCRIPTOR の値は 2 です。 ここで指定したファイル名は、コマンドの実行中に生成されるログ ファイル用です。
以下の構文フォーマットに従って、stderr メッセージを echo することもできます。
Your command here >&2 echo "error"
トピックを簡単にするために例を見てみましょう。 エラー コマンドを作成し、出力エラー メッセージを echo したいとします。
サンプルコードは次のようになります。
echo $( 3 + 2 )) >&2 echo "error"
上記のコードでは、その動作を理解するために意図的にエラーを作成しています。 ここではブラケットの 1つを削除したため、エラーになる可能性があります。
その後、echo でそのエラーを表示します。 上記のコードを実行すると、以下のような出力が表示されます。
./example.sh: line 1: syntax error near unexpected token `)'
./example.sh: line 1: `echo $( 3 + 2 )) >&2 echo "error" '
以下のようにコードを修正し、コマンドを再度実行します。
echo $(( 3 + 2 )) >&2 "No error has been found."
コードを実行すると、以下のような出力が得られます。
5 No error has been found.
この記事で使用するコードはすべて Bash で記述されています。 Linux シェル環境でのみ動作します。