【Linux】シェルスクリプトの繰り返し処理:for文

Linux

どーも!marusukeです!

シェルスクリプトのfor文について説明します!

シェルスクリプトのfor文でできること

シェルスクリプトのfor文は、リストの各要素に対して繰り返し処理を行うために使用されます。指定した範囲やリスト、ファイル名の集合、数値の範囲などを順に処理する際に非常に便利です

基本的な構文

for 変数名 in リスト
do
  コマンド
done

動作の流れ

  • forループでは、リスト内の各要素が順番に変数名に代入され、そのたびにdoブロック内のコマンドが実行されます
  • doneでループの終了を示します

for文の使用例

例1: 単純なリストでの繰り返し

fruits.sh

#!/bin/bash

# フルーツのリスト(apple banana orange)で繰り返す
for fruit in apple banana orange
do
  echo "フルーツ: $fruit"
done

※行頭の#!/bin/bash#!は、シバン(shebang)といい、実行するシェルを指定しています。今回はbashシェルで実行するため、/bin/bashを指定しています

出力結果

※ここではbashコマンド利用して、自作したシェルスクリプトを実行しています

$ bash fruits.sh
フルーツ: apple
フルーツ: banana
フルーツ: orange

例2: カレントディレクトリ内のすべてのファイルまたはディレクトリを表示

process_files.sh

#!/bin/bash

# カレントディレクトリ内のすべてのファイルまたはディレクトリを表示
for file in ./*
do
  echo "$file "
done

出力結果

$ bash process_files.sh
./file1.txt
./file2.txt
./file3.txt

例3: 数値の範囲での繰り返し(seqコマンドを使用)

count_numbers.sh

#!/bin/bash

# 1から5までの数値を順に出力
for i in $(seq 1 5)
do
  echo "数値: $i"
done

$(seq 1 5)部分は、seqコマンドを利用して1~5の数値を1つずつ返します

出力結果

$ bash count_numbers.sh
数値: 1
数値: 2
数値: 3
数値: 4
数値: 5

例4: C言語風の数値ループ

Bashでは、C言語のようにfor文で数値を使ったループを実現することも可能です

c_style_for.sh

#!/bin/bash

# C言語風のforループで1から5まで繰り返し
for (( i=1; i<=5; i++ ))
do
  echo "数値: $i"
done

出力結果

$ bash c_style_for.sh
数値: 1
数値: 2
数値: 3
数値: 4
数値: 5

ここまでのfor文で利用した記法のまとめ

設定項目説明
in リスト繰り返す対象のリストを指定します
$(コマンド)コマンドの出力をリストとして使用します(例: $(ls)
seq 開始 終了範囲内の数値を生成して繰り返すために使います
(( 初期化; 条件; 増分 ))C言語風の構文で数値ループを実行する際に使います

応用例:ファイルを繰り返し処理し、文字列を検索

以下の例では、/path/to/directory/ディレクトリ内のすべての.txtファイルをif文とgrepコマンドで1行ずつ確認し、「error」という文字列が含まれているかを確認します

#!/bin/bash

# 指定したディレクトリ内の.txtファイルを処理
for file in /path/to/directory/*.txt
do
  if grep -q "error" "$file"; then
    echo "$file で 'error' が見つかりました。"
  else
    echo "$file には 'error' は見つかりませんでした。"
  fi
done

出力結果

/path/to/directory/内に

  • file1.txt
  • file2.txt

のファイルがあり、file2.txt内にerrorと記載されている行がある場合、

$ bash check_errors.sh
/path/to/directory/file1.txt には 'error' は見つかりませんでした。
/path/to/directory/file2.txt で 'error' が見つかりました。

と表示されます

for文を使うことで、シェルスクリプトで繰り返し処理を簡単に実装でき、ファイル処理や数値計算など、様々なタスクの自動化が可能になります

以上です!

ここまで読んでいただきありがとうございました!

コメント

タイトルとURLをコピーしました