2013-03-06 100 views
0

我遇到了shell脚本问题。由于语法错误,grant命令在shell脚本中不起作用

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

SQL2 = \ “在\ $ {} DB_NAME授予所有*为\ $ {} DB_USER @ \ $ {}主机通过\ $ {} DBPASS鉴定; \”;

但随着MySQL的“批”命令语法,我需要把双引号之前和之后\${dbpass},这是shell脚本行我给above.When我把这样的,\"\${dbpass}\"的一部分,在执行期间抛出语法错误。我需要解决这个问题。

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

的ssh -t [email protected]
苏根-c ”
回声\“ 给数据库名称:\ ”;
读DB_NAME;
回声\“ 给密码:\”;
读DB_PASS;
主机=本地主机;
SQL1 = \ “创建数据库\ $ DB_NAME; \”。
SQL2 = \“授予所有在\ $ {DB_NAME} *为\ $ {DB_NAME} @ \ $ {host}由\“\ $ {db_pass} \”; \“标识;
sql3 = \“\ $ {sql1} \ $ {sql2} \”;
echo \“============== \”;
mysql -u root -p -e \“\ $ {sql3} \”;


请参考此脚本,并请让我知道我需要这个做必要的修改

感谢

+0

你提到'$ db_name'等变量,它们是来自shellscript的吗?其次,它真的需要双引号?是否支持单引号?什么是语法错误,脚本?你如何将这个传递给_something_和_something_? – Jite 2013-03-06 12:02:39

+0

sql2是一个bash变量? – 2013-03-06 12:38:30

+0

@DavideBerra:我不知道你是谁,但我看不到任何具体的东西,使它成为_bash_变量。而是一个shell变量:) – Jite 2013-03-06 13:24:26

回答

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 
+0

感谢您的重播davide.But请看看我更新的问题。 – user103134 2013-03-06 16:17:39