どーも!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
文を使うことで、シェルスクリプトで繰り返し処理を簡単に実装でき、ファイル処理や数値計算など、様々なタスクの自動化が可能になります
以上です!
ここまで読んでいただきありがとうございました!
コメント