使用 mysql 命令的 Bash 脚本,变量失败

使用 mysql 命令的 Bash 脚本,变量失败

我有一个脚本来克隆虚拟主机和关联的数据库 - 但是其中一个 mysql 命令不起作用。它失败并最终输出 mysql 版本号和“如何使用”信息,就好像没有传递有效参数一样 - 但没有给出错误。

下面是该脚本的缩写版本 - 这是应该创建新数据库并授予失败权限的行。如果您能提供有关我的错误或如何找出问题的指导,我将不胜感激。

谢谢。

#!/bin/bash -e
clear
echo "MySQL Admin Password: "
read -s mysqlpass
echo "New Site name (short, a-zA-Z only)"
read -e newsitename
echo "Last chance - sure you want to run the script? (y/n)"
read -e run
if [ "$run" == y ] ; then

    # This command doesn't work
    dbsetup="CREATE DATABASE "$newsitename"_db;GRANT ALL PRIVILEGES ON "$newsitename"_db.* TO 'site_usr'@'localhost';FLUSH PRIVILEGES;"
    mysql -u root -p$mysqlpass -e "$dbsetup"

    mysqldump -u root -p$mysqlpass template_db > temp.sql

    dbimport=$newsitename"_db < temp.sql"
    mysql -u root -p$mysqlpass $dbimport

else
    exit
fi

答案1

你可以试试:

dbsetup="CREATE DATABASE ${newsitename}_db;GRANT ALL PRIVILEGES ON ${newsitename}_db.* TO 'site_usr'@'localhost';FLUSH PRIVILEGES;"

双引号会损坏您的字符串。

答案2

这个在 shell 脚本中对我有用:

environment_id=10

mysql -u root -proot dbname -e "update environment SET deployment_status = 1 WHERE environment_id = '${environment_id}'";

相关内容