bash – 列出在/大于给定前缀之后出现词法的文件(或者以正确的顺序运行数据库升级脚本)
作者:互联网
我正在尝试创建一个运行在一堆SQL脚本中的shell脚本.
我有这些文件:
$ls upgrade/ 01-foo.sql 02-bar.sql 02-baz.sql 03-foo1.sql 04-buz.sql
我已经获得了当前数据库的版本,例如DB_VERSION = 02
我现在如何轻松地循环并使用大于$DB_VERSION的前缀对文件进行全局处理,并按顺序运行它们?
即我想做
for f in ???? ; do mysql < $f done
并且,在DB_VERSION = 02的情况下,按顺序运行03-foo1.sql和04-buz.sql.
解决方法:
初始设置:触摸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;对于文件?? – * .sql; do ver =“${file:0:2}”; [“$ver”-gt“$curr”]&& echo“$file”; DONE
即,将当前版本定义为02,然后查看所有文件(globbing是按字母顺序排列),如果它们的数字前缀在数字上更大,则执行它们.替换mysql(或你有什么)的echo.
标签:bash,mysql,shell-script 来源: https://codeday.me/bug/20190816/1670574.html