如何在bash中禁用点替换?

时间:2017-06-18 15:19:09

标签: mysql bash

我想从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}\.*)来逃避点 - 没有任何改变。

我如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

你的方法没有任何问题,它在我的案例中有效。见下文。你能告诉我们你得到的错误是什么,以便我们可以帮到你吗?

[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:  我忘了提到这绝对不是一个重击问题。

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