この記事を読むと・・・ |
---|
シェルスクリプトで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