複数のSQLスクリプトを実行するシェルスクリプトを作成しようとしています。
次のファイルがあります。
$ lsアップグレード/ 01-foo.sql 02-bar.sql 02-baz.sql 03-foo1.sql 04-buz.sql
現在、データベースのバージョンがあります。DB_VERSION=02
これで、$DB_VERSIONより大きいプレフィックスを持つファイルを簡単に繰り返し、グローバル化して順番に実行できる方法は何ですか?
つまり、私はしたいです。
fのため? MySQL < $f 完璧
そしてDB_VERSION = 02の場合、03-foo1.sql
andを順番に実行します。04-buz.sql
ベストアンサー1
デフォルト設定:touch 01-foo.sql 02-bar.sql 02-baz.sql 03-foo1.sql 04-buz.sql 09-quux.sql 10-lala.sql 99-omg.sql
実際のコード:curr=02; for file in ??-*.sql; do ver="${file:0:2}"; [ "$ver" -gt "$curr" ] && echo "$file"; done
つまり、現在のバージョンをとして定義し、すべての02
ファイル(ワイルドカードを含むアルファベット順)を調べて、数字のプレフィックスが数字より大きい場合に実行します。交換mysql
(または何を持っていますか)echo
。