シェルでwhileを使用したループ処理を実装

シェルでwhileを使用したループ処理を実装

シェルスクリプトで while ループを使用する際の基本的な構文と実装例について説明します。
while ループは、指定した条件が真である限り、ループ内のコマンドを繰り返し実行します。

基本的な構文

while 条件
do
  コマンド
done

具体例

以下に、カウンタを使用して while ループを実装する例を示します。
このスクリプトは、1から5までの数字を順に表示します。

例1: 単純なカウンタループ
#!/bin/bash

# カウンタの初期化
counter=1

# 条件が真である限りループ
while [ $counter -le 5 ]
do
  echo "カウンタの値は: $counter"

  # カウンタのインクリメント
  counter=$((counter + 1))
done

このスクリプトは次のように動作します:

1. counter 変数を 1 に初期化します。
2. while ループが counter が 5 以下である間繰り返します。
3. ループの内部で、現在のカウンタの値を表示します。
4. counter の値を 1 増やします。
5. 条件が真である限り、これらのステップを繰り返します。

例2: ファイルの行数をカウントするループ

次に、ファイルの行数をカウントする while ループの例を示します。
このスクリプトは、ファイル example.txt の各行を読み取り、その内容を表示します。

#!/bin/bash

# ファイル名の指定
file="example.txt"

# ファイルが存在するか確認
if [ ! -f "$file" ]; then
  echo "ファイルが存在しません: $file"
  exit 1
fi

# ファイルを1行ずつ読み取る
while IFS= read -r line
do
  echo "行の内容: $line"
done < "$file"

このスクリプトは次のように動作します:

1. file 変数にファイル名を指定します。
2. 指定したファイルが存在するか確認します。
存在しない場合はエラーメッセージを表示して終了します。
3. while ループを使用して、ファイルの各行を読み取ります。
4. 各行の内容を表示します。

注意点

  • while ループの条件部分で使用する演算子や比較方法は、使用するシェルによって異なる場合があります。

上記の例では、[ $counter -le 5 ] や IFS= read -r line のように条件を記述していますが、環境によっては異なる記法が必要な場合があります。

  • ループの中で長時間処理が行われる場合は、ループが終了する条件を正しく設定しないと、無限ループになる可能性があります。

これらの基本的な使い方を理解して、さまざまな条件や処理に応じて while ループを活用できます。