Bashのforループ徹底解説!基本構文から実用例まで
Bashスクリプトを書くとき、forループは複数のファイル、レコード、その他の値に対して同じ処理を繰り返し実行するための非常に便利なツールです。
for文は値のリストを順番に処理し、各項目に対してタスクを実行します。すべての項目が処理されるまで、この繰り返しが続けられます。
具体的な使用例としては、ディレクトリ内のファイルを順に処理する、テキストファイルの各行を読み込む、データベースクエリの出力結果を1件ずつ扱うといったケースが挙げられます。
Bash forループの基本構文
for VARIABLE in LIST
do
COMMANDS
done
各要素の意味は以下の通りです。
- VARIABLE(変数):リスト内の各項目が処理される際に代入される変数名です。COMMANDSの部分でこの変数を利用できます。
- LIST(リスト):繰り返し処理の対象となる値の集まりです。さまざまな形式で指定できます(詳細は後述の例を参照してください)。
Bash forループの実用例
forループでは、あらかじめ定義されたリストだけでなく、他のスクリプトやコマンドラインツールの出力から生成されたリストも反復処理できます。
数値の範囲を繰り返し処理する
{START…END}という形式を使うと、指定した範囲の数値を1ずつ増加させながら処理できます。
for num in {0..10}
do
echo "10までカウント中!現在の数字は $num です"
done
ポイント:
- リスト内の各項目は変数 num に代入され、スクリプト内では $num として参照できます。
- 数値は波括弧({})の先頭の数値から末尾の数値まで、1ずつ増加しながら処理されます。
- 数値範囲を使った反復処理は、Bashバージョン3以降でサポートされています。
3ずつ増加させて3の倍数だけを処理したい場合は、{START…END…INCREMENT}形式を使用します。
for num in {0..15..3}
do
echo "$num は3の倍数です!"
done
ポイント:
- 波括弧内の式に3つ目の数値(増分)を追加しています。
- この例では、0から15までの数値が3ずつ増加しながら処理されます。
- カスタム増分による範囲指定は、Bashバージョン4以降でサポートされています。
文字列のリストを繰り返し処理する
文字列値のリストを反復処理することも可能です。
for car in Ford Holden Honda BMW Ferrari
do
echo "$car に乗ってみたい!"
done
配列を繰り返し処理する
配列を変数として宣言しておき、その要素を順に処理することもできます。
FRUITS=('Apple' 'Pear' 'Orange' 'Strawberry')
for fruit in "${FRUITS[@]}"
do
echo "$fruit はおいしい!"
done
ファイル(およびその他のコマンド出力)を繰り返し処理する
他のコマンドラインコマンドの出力結果に対してループ処理を行うこともできます。
for f in *
do
echo "ファイル名: $f"
done
breakでループを途中終了する
break文を使うと、任意の時点でループを抜けて処理を終了できます。
for num in {0..15..3}
do
echo "$num は3の倍数です!"
if [[ "$num" == '9' ]]
then
break
fi
done
echo '9でカウント終了!'
continueで次の反復へスキップする
continue文は、現在の反復における残りのコードの実行を停止し(まるごとスキップして)、次の反復へ処理を進めます。
for num in {0..15..3}
do
if [[ "$num" == '6' ]]
then
continue
fi
echo "$num は3の倍数です!"
done
echo '6はスキップされました!'
まとめ
スクリプト作成時にループを活用すれば、作業時間を大幅に節約でき、手動でのデータ入力なしにファイルやデータの処理を自動化できる柔軟なスクリプトを作成できます。
その他のBashスクリプティングのコツについては、当サイトの他の記事もぜひご覧ください!
-
【初心者向け】JavaScriptのfor...ofループの使い方を実例つきで解説
JavaScriptのfor...ofループは、配列、文字列、配列風オブジェクト(Array-like objects)、NodeListなど、反復可能(イテラブル)なオブジェクトの要素を先頭から順番に1つずつ取り出して処理するための構文です。 インデックスの管理が不要なため、従来のforループやforEachメソッドと比べてコードが簡潔になり、可読性や保守性が向上するというメリットがあります。 for...ofループの基本構文 for (変数 of 反復可能オブジェクト) { // 各要素に対して実行したい処理 } サンプルコード 次の例では、for...ofループを使って文
-
Bashのforループコマンドの使い方を徹底解説!自動化の第一歩
仕事でも家庭でも、テクノロジーを活用して生活を楽にする最良の方法の一つが「自動化」です。スクリプトや定时実行ジョブでタスクを自動化すれば、時間・手間・ストレスを大幅に節約できます。しかし、何から始めればよいのか分からないという方も多いはず。この記事では、IT自動化の基礎となるツールであるBashのforループコマンドの使い方を、初心者にも分かりやすく解説します。 テスト環境の準備 まず必要なのは、動作するBashの環境です。BashはLinux、Unix、BSD、macOSのターミナルにおけるデフォルトシェルです(zshを使用している場合を除く)。現在どのシェルを実行しているか確認するに