如何使用 2 个文件 txt 的循环?

How can i use looping from 2 file txt?

提问人:skidamarink 提问时间:5/24/2023 最后编辑:skidamarink 更新时间:5/24/2023 访问量:19

问:

我有 2 个文件.txt,我想用于循环备份数据库。

文件 1 是数据库名称 = DB_NAME.txt

db_abc
db_def

文件 2 是表名 = TB_NAME.txt

tb_123
tb_456
tb_789

我想用它来

/usr/bin/mysqldump --compact --no-create-info -u<user> -p<pass> -h<ip> ${DB_NAME} ${TB_NAME} > /home/backup/backup_data/data_${DB_NAME}_${TB_NAME}_$(date "+%Y.%m.%d-%H.%M.%S").sql

我想要的是那个循环的脚本,像这样运行

/usr/bin/mysqldump --compact --no-create-info -u<user> -p<pass> -h<ip> **db_abc tb_123** > /home/backup/backup_data/data_**db_abc_tb_123**_$(date "+%Y.%m.%d-%H.%M.%S").sql

/usr/bin/mysqldump --compact --no-create-info -u<user> -p<pass> -h<ip> **db_abc tb_456** > /home/backup/backup_data/data_**db_abc_tb_456**_$(date "+%Y.%m.%d-%H.%M.%S").sql

/usr/bin/mysqldump --compact --no-create-info -u<user> -p<pass> -h<ip> **db_abc tb_123** > /home/backup/backup_data/data_**db_abc_tb_123**_$(date "+%Y.%m.%d-%H.%M.%S").sql

/usr/bin/mysqldump --compact --no-create-info -u<user> -p<pass> -h<ip> **db_def tb_123** > /home/backup/backup_data/data_**db_def_tb_123**_$(date "+%Y.%m.%d-%H.%M.%S").sql

/usr/bin/mysqldump --compact --no-create-info -u<user> -p<pass> -h<ip> **db_def tb_456** > /home/backup/backup_data/data_**db_def_tb_456**_$(date "+%Y.%m.%d-%H.%M.%S").sql

/usr/bin/mysqldump --compact --no-create-info -u<user> -p<pass> -h<ip> **db_def tb_123** > /home/backup/backup_data/data_**db_def_tb_123**_$(date "+%Y.%m.%d-%H.%M.%S").sql

我已经尝试过像这样使用数组,但我没有得到我想要的

#!/bin/bash

l_db="/home/scripts/backup/DB_NAME.txt";
l_tb="/home/scripts/backup/TB_NAME.txt";

declare -a database=(`cat ${l_db}`)
declare -a table=(`cat ${l_tb}`)

for DB in "${database[@]}"; do
    /usr/bin/mysqldump --compact --no-create-info -u<user> -p<pass> -ip ${DB} ${table[$i]} > /home/backup/backup_data/data_${DB}_${table[$i]}_$(date "+%Y.%m.%d-%H.%M.%S").sql
done

我希望有人知道如何解决我的问题,并想分享他/她的知识。请

数组循环 shell for-loop while-loop

评论

1赞 shellter 5/24/2023
如果不测试你的代码,你似乎就快到了。为什么不在第一个循环中添加另一个循环呢?即。 ..然后只有一个命令同时引用 和 。请注意,您永远不会在现有代码中定义。祝你好运。for TB in "${table[@]}" ; do/usr/bin/mysqldump$DB$TB$i
1赞 skidamarink 5/24/2023
啊......终于我得到了我想要的。事实证明,解决方案就在我眼前。感谢启蒙兄弟,这对我帮助很大。

答: 暂无答案