2017-09-29 24 views
0

私はこのように、私のデータベースをダンプするためのスクリプトを持っている:私はターミナルでコマンドを実行するとエスケープ中括弧

#!/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 

をそれはまだ、すべてのテーブルをダンプ:

私は、中括弧をエスケープすることを試みました。

私の質問は、シェルスクリプトで中かっこを正しくエスケープする方法です。

+0

私は正式な回答をしませんので、このオプションを複数回指定する方が簡単です。 "複数のテーブルを無視するには、このオプションを複数回使用する"と言います。 –

+0

愚かなことは(メモリから)おそらく のようにスクリプトのエスケープをエスケープします。 –

答えて

1

それは、コマンドラインで作業を行い、なぜ私が答えることはできませんが、ドキュメントはオプションを複数回使用することを言います:

mysqldump --ignore-table documentation

man mylsqdump 

--ignore-table=db_name.tbl_name

ドゥ指定されたテーブルをダンプしないでください。テーブルは データベースとテーブル名の両方を使用して指定する必要があります。複数のテーブルを無視するには、このオプションを に複数回使用します。このオプションは、ビューを無視するためにも使用できます。

+0

私はどこか読んでいます中括弧を使用して複数のテーブルを無視することができます。たぶん私はマニュアルに固執し、 '--ignore-table'を何度も使うべきでしょう。ありがとう – dann