シェルスクリプト

シェルスクリプトで指定した範囲で処理を繰り返す方法

シェルスクリプトで指定した範囲で処理を繰り返す方法

この記事では、シェルスクリプトで指定した範囲で処理を繰り返す方法をお伝えします。

少しでもシェルスクリプトを使って開発をする際の参考になれば幸いです。

シェルスクリプトで指定した範囲で処理を繰り返す方法

例えば以下のような状況を想定します。

以下のような、数字で指定したファイルに共通の処理を施したい場面

  • 1.csv
  • 2.csv
  • 3.csv
  • 4.csv

Laravelを使って開発をしている場合、それぞれのファイルに対する処理は以下の通り。コマンドとファイル番号を指定したら実行できるとします

php artisan execute 1

 

もちろん、コマンドを順に何度も実行すれば目的は達成できます。

  1. php artisan execute 1
  2. php artisan execute 2
  3. php artisan execute 3
  4. php artisan execute 4
  5. php artisan execute 5

 

しかし、例えばcsvファイルが100以上ある場合、全てのコマンドを手打ちするのは非現実的です。

 

そこで使えるのがシェルスクリプトです。

このような状況の場合、以下のようなシェルスクリプトファイルを作成すれば、渡す引数に応じて繰り返しの処理を実行してくれます。

for i in 'seq $1 $2'
do
php artisan execute ${i}
done

 

簡単に中身の実装の説明をします。

一行目の $1,$2 には渡した引数が入ります。例えば ./hoge.sh 1 5 と実行すれば、 seq 1 5 となります。

 

seqは範囲指定した数字を出力するコマンドです。

実際に実行すると分かりやすいでしょう。

seq 1 5を実行すると、以下のように1〜5の数字が出力されます。

seqコマンドの実行結果

 

そして、それらの数字が一つずつ i に渡って、 php artisan execute ${i}の処理が実行されていきます。

 

シェルスクリプトで指定した範囲で処理を繰り返す方法 まとめ

今回は、シェルスクリプトで指定した回数処理を繰り返す方法をご紹介しました。

seqコマンドを使って、以下のように実装することで、指定した範囲だけ処理を繰り返すことができます。

for i in 'seq $1 $2'
do
php artisan execute ${i}
done

 

最後まで読んでいただきありがとうございました。

この記事がシェルスクリプトで指定した範囲で処理を繰り返す上で少しでも参考になっていれば幸いです。

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA