Bashのforループとwhileループの使い方まとめ【実例付き】
他の多くのスクリプト言語と同様に、Bashでもループ処理がサポートされています。
ループは、同じ作業を何度も繰り返す場合に非常に便利な仕組みです。Bashスクリプトでは、主に「forループ」と「whileループ」の2つを活用できます。本記事では、それぞれの基本構文と実用的なサンプルコードをわかりやすく紹介します。
Bashのforループ
forループの基本構文は以下の通りです。
for VARIABLE in PARAM1 PARAM2 PARAM3
do
// forループの処理範囲
done
forループは、指定された各パラメータに対して順番に処理を実行します。パラメータには、個々の数値、数値の範囲(レンジ)、文字列など、さまざまなものを指定できます。
forループの基本例
まずは、forループを使って1から5までの数字を出力するシンプルな例を見てみましょう。
#!/bin/bash
for i in 1 2 3 4 5
do
echo "$i"
done
出力結果:
1
2
3
4
5
数値の範囲を指定してループする
波括弧を使った {開始..終了} の形式を利用すると、数値の範囲を簡単に指定できます。
例:
for i in {1..5}
do
echo "$i"
done
出力結果:
1
2
3
4
5
文字列を順番に処理する
forループは、文字列のリストを扱うこともできます。曜日名を順に出力する例です。
#!/bin/bash
for day in MON TUE WED THU FRI SAT SUN
do
echo "$day"
done
出力結果:
MON
TUE
WED
THU
FRI
SAT
SUN
C言語スタイルのforループ
Bashでは、C言語のような二重括弧 (( )) を使った構文でforループを記述することも可能です。
例:
#!/bin/bash
for ((i=1; i<=5; i++))
do
echo "$i"
done
出力結果:
1
2
3
4
5
カレントディレクトリのファイル一覧を表示する
forループと ls コマンドを組み合わせれば、カレントディレクトリ内の全ファイルの一覧を表示できます。
#!/bin/bash
for fname in ./*
do
ls -l $fname
done
Bashのwhileループ
Bashはwhileループもサポートしています。whileループは、指定した条件が真(true)である限り、一連の命令を繰り返し実行します。
whileループの基本構文は以下の通りです。
while [条件式]
do
// 実行したい命令
done
条件式は、命令を実行する前に毎回評価されます。そのため、ループ内で条件に関わる変数を更新しないと、条件が真のまま変化せず、無限ループに陥ってしまうので注意が必要です。
whileループの基本例
次の例は、1から5までの数字を出力するシンプルなwhileループです。変数numが5より大きくなると、ループは終了します。
#!/bin/bash
num=1
while [ $num -le 5 ]
do
echo "$num"
let num++
done
ここで使われている -le は「〜以下(less than or equal)」を意味する比較演算子で、let num++ によって変数numの値を1ずつ増やしています。
C言語スタイルのwhileループ
forループと同様に、whileループもC言語風の二重括弧構文で書くことができます。
例:
#!/bin/bash
num=1
while((num <= 5))
do
echo $num
let num++
done
このように、Bashのループにはいくつかの書き方があります。決まったリストや範囲の処理にはforループ、条件に応じた反復処理にはwhileループというように、用途に応じて使い分けることで、より効率的で読みやすいシェルスクリプトを作成できます。
-
Bash変数チュートリアル – 基本からグローバル変数・ローカル変数まで学べる6つの実用例
Bash変数は、プログラムの実行期間中に必要となる情報を一時的に保存しておくための仕組みです。本記事はBashチュートリアルシリーズの一篇で、他のプログラミング言語と同様にBashでも変数を利用できることを踏まえ、基本的な使い方からグローバル変数とローカル変数の違いまでを、6つの実用的なサンプルを通じて解説します。 Bash変数の基本構文 変数の定義は非常にシンプルで、次の書式に従います。 VARNAME=VALUE 注意: 変数へ代入する際は、「=」記号の前後にスペースを入れてはいけません。「VAR=VALUE」のように書けば、シェルは「=」を代入記号として認識し、この行を変数への代入とし
-
数式だけでExcelにFORループを作る方法|3つの実例でわかりやすく解説
Excel VBAは使いたくないけれど、数式だけでFORループのような繰り返し処理を実現したい——そう考えたことはありませんか?この記事では、数式のみを使ってFORループと同じ動作を実現する方法を具体的に紹介します。Excel VBAでコードが書ける方は自由自在です。しかし、VBAを書いたことがない方や、ブックにマクロコードを含めたくない方は、シンプルなループ処理ひとつでも工夫が必要になります。そんなときこそ、発想の転換が役立ちます。作業用ファイルのダウンロード以下のリンクから、この記事で使用する作業用ファイルをダウンロードできます。数式でExcelにFORループを作る3つの例ここでは、数式を