MySQLdump与" - 其中" -option不起作用

时间:2014-10-22 16:19:20

标签: bash mysqldump

我尝试构建一个转储旧Sql-Data的脚本,但它不起作用。

这是我到目前为止提出的脚本:

#!/bin/bash

MAX_AGE="-3 months"    
DB="anyDb"
TABLE="logs"
USER="user"
PASS="pass"

# Get date
MAX_DATE=$(date -d "${MAX_AGE}" +"%Y-%m-%d")

# set Options
OPTIONS="--compact --extended-insert --where=\"created_at < '${MAX_DATE} 00:00:00'\""

mysqldump -u $USER -p$PASS $OPTIONS $DB $TABLE > someOldData.sql

问题是,当我在shell中输入结果命令但是在运行脚本时,它可以正常工作,它会给我以下错误:

Access denied for user 'user'@'localhost' to database '<' when selecting the database

我的命令的where-statement的转义有什么问题吗?

1 个答案:

答案 0 :(得分:1)

扩展时,不会处理shell变量中的引号。使用shell数组而不是单个字符串:

OPTIONS=(--compact --extended --where="created_at < '${MAX_DATE} 00:00:00'")

mysqldump -u $USER -p$PASS "${OPTIONS[@]}" $DB $TABLE > someOldData.sql

请参阅Quotes inside a variable are ignored