Bashスクリプトの中でも、for文は非常に強力かつ柔軟性のあるループ構造です。数値や文字列、配列を扱う際にfor文を使うことで、タスクの効率が大幅に向上します。この記事では、Bashのfor文の基本から応用テクニックまでを解説し、スクリプト作成に役立つ実践的な知識を提供します。
Bashのfor文の基本構造
Bashのfor文は、特定のリストを順に処理する際に使用されます。基本構造は以下の通りです:
for var in list
do
commands
done
ここで、var
はリスト中の各要素に割り当てられる変数で、list
にはループさせたい要素が入ります。commands
には、各要素に対して実行するコマンドが記述されます。
実践例:簡単なループ
まずは、簡単なリストを用いたループの例を見てみましょう。
for fruit in apple banana orange
do
echo "I like $fruit"
done
このスクリプトを実行すると、以下の出力が得られます:
I like apple
I like banana
I like orange
リストの要素が順にfruit
に割り当てられ、それに応じてechoコマンドが実行されます。
インデックスによるループ
数値の範囲を使って一定の回数だけループを実行することもできます。C言語のような形式でインクリメントを用いる方法は以下のようになります:
for ((i=1; i<=5; i++))
do
echo "Iteration $i"
done
このスクリプトでは、1から5までの数値を持つ変数i
が使われ、それにより5回のループが実行されます。
配列を用いたループ
Bashでは、配列を使ってより複雑なデータセットを扱うこができます。配列をfor文で扱う基本的な例を示します:
array=("element1" "element2" "element3")
for element in "${array[@]}"
do
echo "Array item: $element"
done
配列array
の各要素が順次element
に割り当てられ、対応するechoコマンドが実行されます。
応用テクニック
Bashのfor文を使いこなすためには、もう少し進んだテクニックも知っておくと便利です。
ファイルやコマンド出力を利用したループ
ファイル内の各行やコマンドの出力結果をループで処理することも可能です。
# ファイルの各行を処理
while IFS= read -r line
do
echo "Line: $line"
done < "file.txt"
# コマンドの出力を処理
for user in $(cut -d: -f1 /etc/passwd)
do
echo "User: $user"
done
前者の例では、file.txt
の各行が処理され、後者では/etc/passwd
ファイルからユーザーネームを抽出して処理しています。
入れ子のループ
入れ子のループ(ネストループ)は複雑なデータ構造を効果的に処理するために用いられます。
for i in 1 2 3
do
for j in A B
do
echo "Combination: $i $j"
done
done
この例では、3×2回の組み合わせが生成されます。
まとめ
Bashのfor文は、シンプルなループから応用的なデータ処理まで、多様な方法で利用可能です。これらの基本と応用テクニックを理解することで、スクリプトの作成やタスクの自動化をより簡単に、効率的に進めることができるようになります。数々の例を試し、実際に手を動かしながら習得してみてください。
コメント