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 シェル環境でのみ動作します。