Arrays 将目录中的文件存储到数组中,然后在该数组中循环

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”

我有一个名为“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”<$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