シェルスクリプトの繰り返しでforを使用する時に、ループする回数の指定方法をまとめます。
シェルスクリプトでfor文を使いたいけど、回数の指定方法がわかりません。
そういった疑問に答えます。
windowsのプロンプトで使用できるbatやpythonやphpを使用して、業務効率化やWebサイトを作成しております。javaやシェルスクリプトなど、様々なプログラミングを行った実績ありの筆者です。
シェルスクリプトのfor文で回数の指定方法
シェルスクリプトのfor文の基本構文と使い方
シェルスクリプトのfor文を使った繰り返しの基礎は以下になります。
for 変数 in 変数に入れるリストなど
do
繰り返す処理
done
for文を使ったカウントアップの方法
for文の回数指定の基本は以下です
for 変数 in {1..9}
do
繰り返す処理
done
{1..9}は1から9まで順番に変数に入れていきます。この場合の回数は9になります。
forの回数指定の基本実践
以下のfor文のシェルスクリプトを記述してください。
for i in {1..9}
do
echo 回数指定で$i回繰り返しています
done
$iで変数iに入った値を展開しています。
echoで文字列を表示します。
変数や文字列などを結合する場合は、特に何もせず文字などをつなげれば問題ありません。
forの回数指定の基本実践結果
ではこのシェルスクリプトを実行してみます。今回は「. シェルスクリプト名」で実行します。
結果は9回実行されています。
シェルスクリプトで日本語が文字化けする場合
シェルスクリプトを実行した結果、文字化けする場合があります。
この場合は文字コードが「SJIS」などになっています。「UTF-8」に変更しましょう。
seqコマンドを使った回数指定の方法
「seq」でも回数指定可能です。
for i in `seq 1 9`
do
echo seqで$i回繰り返しています
done
seqコマンドを使った回数指定の方法実践
seqを使用して実行してみます。
seqコマンドを使った時のエラー結果
seqを使用する時のよくあるエラーを紹介しておきます。
以下のシェルスクリプトを実行して見て下さい。
for i in seq 1 9
do
echo seqで$i回繰り返しています
done
「`」が抜けていて「seq」「1」「9」と3つの文字を順番にいれています。
意図しない結果です。「`」をつけ忘れないようにしましょう!
回数指定を(())で行う方法
最後は(())を使用して回数を指定します。
for ((i=1; i<9; i++))
do
echo "(())"で$i回繰り返しています
done
このシェルスクリプトは((初期値; 条件; 次の値))で指定しており、初期値が1で「i++」がiに1を加算していき、iが9になれば終了となります。
これで回数を8回にすることができます。ではシェルスクリプトを実行します。
結果回数は想定通り8回となっています。
回数指定を配列で行う方法
配列の使い方と書き方
配列の基本的な書き方は以下です。
array=(1 2 3 4 5 6 7 8 9)
配列名に「=()」をつけて、その中に配列に入れたい文字などを順に入れていきます。
回数指定を配列で行う時の構文
forで回数を指定するのに配列を使用する時の構文
for i in ${array[@]}
回数指定を配列で行う実践
では回数指定を配列で行う以下のシェルスクリプトを実行します。
array=(1 2 3 4 5 6 7 8 9)
for i in ${array[@]}
do
echo 配列で$i回繰り返しています
done
回数指定を配列で行った結果
回数指定を配列で行い成功しています。
回数指定をファイルを使用して行う方法
ファイルの中身を取得して回数指定してみます。以下のシェルスクリプトを記述します。
for i in `cat shellscript-for-count.txt`
do
echo ファイルから取得$i回目
done
同階層に「shellscript-for-count.txt」を作成して中身を以下のように記述します。
1
2
3
4
5
6
7
8
9
これで先程のシェルスクリプトを実行して見ます。
きちんと回数指定をファイルから取得しています。
応用編:回数をループの制御で行う方法
では回数を指定するが途中で制御を行ってみます。
continueやbreakコマンドでループをスキップしたり終了する方法
for i in {1..9}
do
if [[ $i -eq 5 ]]; then
continue
elif [[ $i -eq 8 ]]; then
break
fi
echo $i回目:5は飛ばす、8なら終了
done
forの回数指定で9回繰り返します。その中でif文により場合分けしています。
5回目の時は「continue」でスキップし、8回目の時は「break」で処理を抜けています。
実行した結果、5番目がスキップされ、7番目までで終了しています。
まとめ:シェルスクリプトのfor文で回数の指定方法
シェルスクリプトのfor文の基本構文と使い方
シェルスクリプトのfor文を使った繰り返しの基礎は以下になります。
for 変数 in 変数に入れるリストなど
do
繰り返す処理
done
for文を使ったカウントアップの方法
for 変数 in {1..9}
seqコマンドを使った回数指定の方法
for i in `seq 1 9`
回数指定を(())で行う方法
for ((i=1; i<9; i++))
回数指定を配列で行う時の構文
for i in ${array[@]}
回数指定をファイルを使用して行う方法
for i in `cat shellscript-for-count.txt`
continueやbreakコマンドでループをスキップしたり終了する方法
for i in {1..9}
do
if [[ $i -eq 5 ]]; then
continue
elif [[ $i -eq 8 ]]; then
break
fi
echo $i回目:5は飛ばす、8なら終了
done
シェルスクリプトのforで繰り返し回数を指定する方法を、実践し画像を使用してわかりやすく説明しました!