Ich mag meine Verbindung und allgemeine Dump-Einstellungen in Variablen setzen und sie dann wie so zu mysqldump
füttern:Odd bash Verhalten mit verschachtelten Variablen
# echo mysqldump ${SRC_SRV} ${SRC_SQL_OPT}
mysqldump -u root -pPass -h host --where="COL > '2016-08-14' AND COL <= '2016-08-15'" --opt --single-transaction --skip-triggers --no-create-db --no-create-info dbase table
Es gibt meine bash
Variablen:
WHERE="COL > '2016-08-14' AND COL <= '2016-08-15'"
SRC_SQL_OPT="--where=\"${WHERE}\" --opt --single-transaction --skip-triggers --no-create-db --no-create-info ${DB} ${TBL}"
Beachten Sie, dass, wenn ich echo
- alles scheint normal, aber wenn ich versuche, es in bash
ausführen, erhalte ich einen Fehler:
mysqldump: Got error: 1049: Unknown database '>' when selecting the database
Und hier ist der Grund, warum (bash -x
):
+ mysqldump -u root -pPass -h host '--where="COL' '>' ''\''2016-08-14'\''' AND COL '<=' ''\''2016-08-15'\''"' --opt --single-transaction --skip-triggers --no-create-db --no-create-info dbase table
Hinweis: jetzt ein paar zusätzliche einfache Anführungszeichen gibt es rund um die --where
Option ... Wie?