Arrays 将目录中的文件存储到数组中,然后在该数组中循环
我有一个名为“sql”的文件夹,其中包含.sql文件。我想编写一个脚本,搜索所有.sql文件,将文件名放入数组,然后启动每个文件 即:Arrays 将目录中的文件存储到数组中,然后在该数组中循环,arrays,file,shell,loops,directory,Arrays,File,Shell,Loops,Directory,我有一个名为“sql”的文件夹,其中包含.sql文件。我想编写一个脚本,搜索所有.sql文件,将文件名放入数组,然后启动每个文件 即: #/bin/bash #选择权 DBHOST=MySQL主机名 DBNAME=MySQL数据库 DBUSER=MySQL用户名 DBPASS=MySQL密码 #查找.sql文件 ??? #创建MySQL表 对于“${TBNAME[@]}”中的i;做 mysql-h“$DBHOST”-u“$DBUSER”-p“$DBPASS”“$DBNAME”
#/bin/bash
#选择权
DBHOST=MySQL主机名
DBNAME=MySQL数据库
DBUSER=MySQL用户名
DBPASS=MySQL密码
#查找.sql文件
???
#创建MySQL表
对于“${TBNAME[@]}”中的i;做
mysql-h“$DBHOST”-u“$DBUSER”-p“$DBPASS”“$DBNAME”<$TBNAME[$i]
完成
如何在指定文件夹中搜索.sql文件
for sqlfile in sql/*.sql ; do
# do things to $sqlfile
done
例如,您可以使用echo“$PWD/$sqlfile”
Late aswer(接受一个后)将完整路径名保存在表中,但对于记录:
printf "source %s\n" sql/**/*.sql | mysql --batch
为此,您需要在~/.bash\u配置文件中包含以下内容:
shopt -s globstar #or put this before the above line
工作原理:
printf "source %s\n" sql/**/*.sql
产生像这样的线条
source sql/some/file.sql
source sql/other/file2.sql
#and such...
递归地查找所有找到的*.sql文件,以及
mysql --batch .... other arguments
将读取“源文件名”行,并执行文件中的sql命令,一次执行,无需多次启动(运行)mysql
命令…甚至更简单!非常感谢你的帮助!
mysql --batch .... other arguments