繁体   English   中英

在shell脚本中转​​义花括号

[英]Escaping curly braces in shell script

我有一个脚本来转储我的数据库,像这样:

#!/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脚本中正确转义花括号/括号?

我无法回答为什么它可以在命令行上运行,但是文档说要多次使用该选项:

mysqldump --ignore-table文档

man mylsqdump

--ignore-table=db_name.tbl_name

不要转储给定的表,必须同时使用数据库名和表名指定该表。 要忽略多个表,请多次使用此选项。 此选项也可用于忽略视图。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM