1

假设我有一个命令:

mysql -h localhost -u root -pmypassword dev<file01.sql;

我有很多 sql 文件要运行:file02.sql, file03.sql, ... file99.sql

我想生成一个这样的 bash 脚本来顺序运行所有这些 sql 文件。

bash 脚本的一部分如下所示:

mysql -h localhost -u root -pmypassword dev<file01.sql;
mysql -h localhost -u root -pmypassword dev<file02.sql;
mysql -h localhost -u root -pmypassword dev<file03.sql;


mysql -h localhost -u root -pmypassword dev<file99.sql;

所有这些行都是相同的模式,只有文件名(filexx.sql)发生了变化。

所有文件xx.sql 都在同一个目录中。

我通常在 Excel 中生成 bash 脚本。我知道这可以很容易地在 bash 中完成,我只是不知道如何。你能建议如何生成这个吗?

非常感谢你。

4

2 回答 2

1

如果要执行这些语句:

for fileid in $(seq 1 99); do
    filename=$(printf "file%02d.sql" $fileid)
    mysql -h localhost -u root -pmypassword dev < $filename
done

但是,如果您只想生成它们:

for fileid in $(seq 1 99); do
    filename=$(printf "file%02d.sql" $fileid)
    echo "mysql -h localhost -u root -pmypassword dev < $filename"
done
于 2013-01-20T04:41:45.837 回答
0

Bash 的大括号展开救援:

for file in file{00..99}.sql; do
    mysql -h localhost -u root -pmypassword dev < $file
done
于 2013-01-20T14:08:19.407 回答