サイトアイコン スグブログ

【シェルスクリプト】for文で回数の指定方法!エラー対処法あり

html

シェルスクリプトの繰り返しでforを使用する時に、ループする回数の指定方法をまとめます。

シェルスクリプトの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回実行されています。

shellscript-for-1-9の実行結果

シェルスクリプトで日本語が文字化けする場合

シェルスクリプトを実行した結果、文字化けする場合があります。

shellscriptで日本語文字化けした結果

この場合は文字コードが「SJIS」などになっています。「UTF-8」に変更しましょう。

seqコマンドを使った回数指定の方法

「seq」でも回数指定可能です。

for i in `seq 1 9`
do
 echo seqで$i回繰り返しています
done

seqコマンドを使った回数指定の方法実践

seqを使用して実行してみます。

shellscript-for-seqの実行結果

seqコマンドを使った時のエラー結果

seqを使用する時のよくあるエラーを紹介しておきます。

以下のシェルスクリプトを実行して見て下さい。

for i in seq 1 9
do
 echo seqで$i回繰り返しています
done

「`」が抜けていて「seq」「1」「9」と3つの文字を順番にいれています。

shellscript-for-seq-1-9-エラーの実行結果

意図しない結果です。「`」をつけ忘れないようにしましょう!

「`」はキーボードのShift+@で入力できます。

回数指定を(())で行う方法

最後は(())を使用して回数を指定します。

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[@]}

シェルスクリプトのfor文で配列を使用する方法は、下の記事で詳しく説明しています。

回数指定を配列で行う実践

では回数指定配列で行う以下のシェルスクリプトを実行します。

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

これで先程のシェルスクリプトを実行して見ます。

シェルスクリプトでforの回数指定をファイルに記述した結果

きちんと回数指定をファイルから取得しています。

応用編:回数をループの制御で行う方法

Business person stand on road fork with hard and easy directions. Choice way isometric

では回数を指定するが途中で制御を行ってみます。

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」処理を抜けています。

shellscript-for-break-continueの実行結果

実行した結果、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で繰り返し回数を指定する方法を、実践し画像を使用してわかりやすく説明しました!

モバイルバージョンを終了