指定されたプレフィックスより大きい/次に語彙的に表示されるファイルのリスト(または正しい順序でデータベースアップグレードスクリプトを実行)

指定されたプレフィックスより大きい/次に語彙的に表示されるファイルのリスト(または正しい順序でデータベースアップグレードスクリプトを実行)

複数の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.sqlandを順番に実行します。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

おすすめ記事