gpt4 book ai didi

mysql - 如何在 bash 中禁用点替换?

转载 作者:行者123 更新时间:2023-11-29 18:46:17 25 4
gpt4 key购买 nike

我想从 bash 脚本运行 MySQL 查询来创建新用户:

mysql -u root -p$dbpass -e "GRANT ALL PRIVILEGES ON appdb_${BUILD}.* TO appuser@localhost IDENTIFIED BY 'somepass'"

其中 $BUILD 变量设置为数字,例如 15,因此最终查询应如下所示:

mysql -u root -p$dbpass -e "GRANT ALL PRIVILEGES ON appdb_15.* TO appuser@localhost IDENTIFIED BY 'somepass'"

但是...在脚本所在的目录和正在运行的目录中,有一个与数据库同名的 tar 存档,因此查询变成这样:

mysql -u root -p$dbpass -e "GRANT ALL PRIVILEGES ON appdb_15.tar.gz TO appuser@localhost IDENTIFIED BY 'somepass'"

我猜发生这种情况是因为存在匹配项,但无法更改文件名。也不允许将脚本移动到其他目录。

我尝试用反斜杠转义点 (appdb_${BUILD}\.*) - 没有任何改变。

我该如何解决这个问题?

最佳答案

您的方法没有任何问题,并且在我的情况下有效。见下文。您能否告诉我们您遇到的错误是什么,以便我们为您提供帮助?

[root@cloud mysql]# ls
appdb_15.tar.gz test.sh

[root@cloud mysql]# cat test.sh
#!/bin/bash

BUILD=15
# First Method
mysql -u root -ptest -e "GRANT ALL PRIVILEGES ON appdb_${BUILD}.* TO appuser@localhost IDENTIFIED BY 'somepass';"

# Second Method
mysql -u root -ptest <<EOF
GRANT ALL PRIVILEGES ON appdb_${BUILD}.* TO appuser1@localhost IDENTIFIED BY 'somepass';
select user, host from mysql.user where user like 'appuser%';
EOF

[root@cloud mysql]# ./test.sh
user host
appuser localhost
appuser1 localhost

编辑1: 我忘记说了,这绝对不是 bash 问题。

编辑 2:将构建变量从 5 更改为 15。

关于mysql - 如何在 bash 中禁用点替换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44616491/

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