【Linux】シェルスクリプトにてfor文を使って繰り返し処理をする方法

シェルスクリプトにてfor文を使って繰り返し処理をする方法
この記事を読むと・・・
シェルスクリプトでfor文を使って繰り返しさせる方法が理解できる
目次

【for文】基本書式

for文は、プログラム内で特定の条件に基づいて処理を繰り返しさせるための機能です。
基本的なfor文の記載パターンを3種類紹介します。


書式パターン①はリストの数だけ繰り返し、処理を実行する記載するパターンです。

書式パターン①
for 変数 in リスト
do
#実行される処理
done


書式パターン②は初期化にて変数の初期値を指定し、条件がである場合、処理を実行し、インクリメント後、再度条件判定を繰り返すパターンです。

書式パターン②
for ((初期化; 条件式; 増分))
do
#実行される処理
done


書式パターン③はコマンドの結果を書式パターン①のリストとして扱うパターンです。

書式パターン③
for 変数 in $(コマンド)
do
#実行される処理
done

【for文】基本書式パターン例

先ほど紹介した基本書式パターンの3種類で作成するシェルスクリプトの例は以下となります。

書式パターン①

リスト(「soccer」、「basketball」、「tennis」)を変数に順に代入していくシェルスクリプトを書式パターン①で作成しています。

#!/bin/bash

for sport in soccer basketball tennis
do
    echo "I play $sport"
done


実際に実行してみると以下のようになります。
例では、変数「sport」にリスト「スポーツ名」を代入し、変数に渡す「スポーツ名」がなくなると繰り返し処理が終了し、以下の結果となっています。

# ./print_sports.sh
I play soccer
I play basketball
I play tennis

書式パターン②

初期値として変数「i」に「1」を代入し、条件式として「iが5以下だったら真である」、増分として変数「i」をインクリメントするシェルスクリプトを書式パターン②で作成しています。

#!/bin/bash

for ((i=1; i<=5; i++))
do
    echo "Number: $i"
done

実際に実行してみると以下のようになります。
例では、初期値「1」から始まり1づつインクリメントされ、6以上になったら繰り返し処理が終了し、以下の結果となっています。

# ./number_plus.sh
Number: 1
Number: 2
Number: 3
Number: 4
Number: 5

書式パターン③

リスト(ls *.txtコマンドの結果)を渡して、変数に順に代入していくシェルスクリプトを書式パターン③で作成しています。

#!/bin/bash

for file in $(ls *.txt)
do
    echo "text file: $file"
done

実際に実行してみると以下のようになります。
例では、変数「file」にコマンド結果である「txtファイル名」を代入し、変数に渡す「txtファイル名」がなくなると繰り返し処理が終了し、以下の結果となっています。

# ls *.txt
test1.txt  test2.txt  test3.txt

# ./command_result.sh
text file: test1.txt
text file: test2.txt
text file: test3.txt
よかったらシェアしてね!
  • URLをコピーしました!
目次