ウェブサイト検索

Linux コマンドの出力を変数に割り当てる方法


コマンドを実行すると、プログラムが生成すると想定される結果、またはプログラム実行の詳細のステータス/エラー メッセージなど、何らかの出力が生成されます。場合によっては、コマンドの出力を変数に保存して、後の操作で使用したい場合があります。

この投稿では、シェル コマンドの出力を変数に割り当てるさまざまな方法、特にシェル スクリプトの目的に役立つ方法を確認します。

コマンドの出力を変数に保存するには、以下の形式でシェル コマンド置換機能を使用できます。

variable_name=$(command)
variable_name=$(command [option ...] arg1 arg2 ...)
OR
variable_name='command'
variable_name='command [option ...] arg1 arg2 ...'

以下に、コマンド置換の使用例をいくつか示します。

この最初の例では、who (システムにログオンしているユーザーを示す) コマンドの値を変数 CURRENT_USERS user に保存します。

CURRENT_USERS=$(who)

次に、echo コマンドを使用して表示される文で次のように変数を使用できます。

echo -e "The following users are logged on the system:\n\n $CURRENT_USERS"

上記のコマンドでは、フラグ -e は、使用されているエスケープ シーケンス (改行の \n など) を解釈することを意味します。時間とメモリの無駄を避けるには、次のように echo コマンド内でコマンド置換を実行します。

echo -e "The following users are logged on the system:\n\n $(who)"

次に、2 番目の形式を使用して概念を示します。次のように、現在の作業ディレクトリ内のファイルの総数を FILES という変数に保存し、 後でエコーすることができます。

FILES=`sudo find . -type f -print | wc -l`
echo "There are $FILES in the current working directory."

以上、今回はシェルコマンドの出力を変数に代入する方法について説明しました。以下のフィードバック セクションからこの投稿に意見を追加できます。