我有一个脚本来转储我的数据库,如下所示:
#!/usr/bin/env sh
PATH=/usr/bin:/bin
LOG="mybackup/log/backup_$(date +%Y-%m-%d_%H:%M:%S).log"
# some other command
# backup mysql database
echo "Backing up database" > ~/$LOG
mysqldump -u myusername -pmypassword --ignore-table={db1.table1,db1.table2,db1.table3,db1.table4} db1 -r ~/mybackup/db/db1_$(date +%Y-%m-%d_%H:%M:%S).sql >> ~/$LOG 2>&1
# some other command
当我在终端中运行命令时,它成功转储我的数据库而没有忽略表。但是当我通过脚本运行命令时,它会转储数据库中的所有表。
我试图摆脱花括号:
mysqldump -u myusername -pmypassword --ignore-table=\{db1.table1,db1.table2,db1.table3,db1.table4\} db1 -r ~/mybackup/db/db1_$(date +%Y-%m-%d_%H:%M:%S).sql
但它仍会转储所有表格。
我的问题是如何在shell脚本中正确地转义大括号/括号?
答案 0 :(得分:1)
我无法回答为什么它在命令行上工作,但文档说多次使用该选项:
mysqldump --ignore-table documentation
man mylsqdump
<强>
--ignore-table=db_name.tbl_name
强>不要转储给定的表,必须使用两者来指定 数据库和表名。要忽略多个表,请使用此选项 多次。此选项也可用于忽略视图。