将目录中的文件存储到数组中,然后遍历该数组

时间:2014-10-06 15:31:00

标签: arrays file shell loops directory

我有一个名为'sql'的文件夹,其中包含.sql文件。我想编写一个脚本来搜索所有.sql文件,将文件名放入一个数组中,然后启动每个文件。

即:

 #!/bin/bash

 # Options
 DBHOST=MySQL-hostname
 DBNAME=MySQL-database
 DBUSER=MySQL-username
 DBPASS=MySQL-password

 # Find .sql Files
 ???

 # Create MySQL Tables
 for i in "${TBNAME[@]}"; do
   mysql -h "$DBHOST" -u "$DBUSER" -p"$DBPASS" "$DBNAME" < $TBNAME[$i]
 done

如何在指定文件夹中搜索.sql文件?

2 个答案:

答案 0 :(得分:1)

for sqlfile in sql/*.sql ; do
    # do things to $sqlfile
done

例如,您可以使用echo "$PWD/$sqlfile"

将完整路径名保存在表格中

答案 1 :(得分:0)

延迟回收(在接受之后),但记录:

printf "source %s\n" sql/**/*.sql | mysql --batch

为此你需要在~/.bash_profile行:

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命令启动(运行)...