gpt4 book ai didi

bash - 带有 "--where"-选项的 MySQLdump 将不起作用

转载 作者:行者123 更新时间:2023-11-29 12:37:48 25 4
gpt4 key购买 nike

我尝试构建一个转储旧 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 语句的转义有什么问题吗?

最佳答案

展开 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

关于bash - 带有 "--where"-选项的 MySQLdump 将不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26512212/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com