シェルでコマンドの実行結果を変数に格納

シェルでコマンドの実行結果を変数に格納

シェルスクリプトでコマンドの実行結果を変数に格納するには、バックティック または $() を使用します。
どちらも同じように機能しますが、最近のシェルスクリプトでは $() の方が推奨されています。

基本的な使い方

以下は、ls コマンドの出力を files という変数に格納する例です:

files=$(ls)

または

files=`ls`

例: 実行結果を確認する

例えば、カレントディレクトリにあるファイルの一覧を取得して、その内容を表示するスクリプトは次のようになります。

#!/bin/bash

# 'ls' コマンドの結果を 'files' 変数に格納
files=$(ls)

# 変数の内容を表示
echo "Current directory files: $files"

例: コマンドの出力を利用した処理

変数に格納されたコマンドの結果を利用して、条件分岐やループ処理を行うこともできます。
以下は、ファイルが存在するかどうかを確認する例です。

#!/bin/bash

# 'ls' コマンドで特定のファイルが存在するかを確認
file_check=$(ls | grep "target_file.txt")

if [ -n "$file_check" ]; then
  echo "File 'target_file.txt' exists."
else
  echo "File 'target_file.txt' does not exist."
fi

変数の特殊な使い方

コマンドの結果が複数行にわたる場合や、結果を配列として扱いたい場合もあります。

#!/bin/bash

# 'ls' コマンドの結果を配列に格納
files=($(ls))

# 配列の各要素をループで表示
for file in "${files[@]}"; do
  echo "File: $file"
done

このように、シェルスクリプトではコマンドの実行結果を変数に格納することで、結果を後で利用したり、処理を条件分岐させたりすることが可能です。
特に $(command) の形式を使用することで、ネストしたコマンドや複雑なコマンドの結果を柔軟に扱うことができます。