0

我遇到了 shell 脚本的问题。

由于某种原因,我已经\在双引号之前使用了字符("),如我的 shell 脚本的以下行。

sql2=\"将 \${db_name}.* 上的所有权限授予 \${db_user}@\${host},由 \${dbpass} 标识;\";

但是在MySQL的“grant”命令语法中,我需要在前面和后面加上双引号\${dbpass},这是我上面给出的shell脚本行的一部分。当我这样输入时\"\${dbpass}\",它在执行过程中会抛出语法错误。什么我是否需要解决这个问题。

这是一个更新。
这是我要运行的 shell 脚本。

ssh -t qbadmin@10.3.2.0 '
su root -c "
echo \"Give db name :\";
read db_name;
echo \"Give password :\";
read db_pass;
host=localhost;
sql1=\"create database \ $db_name;\";
sql2=\"将 \${db_name}.* 上的所有内容授予 \${db_name}@\${host},由 \"\${db_pass}\";\";
sql3=\ "\${sql1}\${sql2}\";
echo \"===============\";
mysql -u root -p -e \"\${sql3}\ ";
";
'

请参考此脚本,并请让我知道我需要对此进行的必要更改。

谢谢。

4

1 回答 1

0

尝试这个

db_name="yourdbname"
db_user="yourdbuser"
host="yourhost"
dbpass="yourdbpass"

sql2="grant all on ${db_name}.* to ${db_user}@${host} identified by ${dbpass};"

echo $sql2 | mysql -u yourusername -pmysql
于 2013-03-06T13:43:39.840 回答