在shell脚本中的密码区域附近发出命令语法错误

时间:2013-03-07 10:28:57

标签: shell

我已经创建了一个像这样的shell脚本。但是在grant命令中遇到语法错误,我认为在密码区附近。如果有人可以,请帮助我。

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=\"grant all on \${db_name}.* to \${db_name}@\${host} identified by \"\${db_pass}\";\";
   sql3=\"\${sql1}\${sql2}\";
   mysql -u root -p -e \"\${sql3}\";
 ";
'

数据库已成功在远程计算机中创建,但grant命令返回错误..!我的猜测是错误可能是因为在grant命令中使用$“db_pass}之前和之后的字符。请帮我解决这个问题。

感谢。

1 个答案:

答案 0 :(得分:0)

嵌套引用总是很棘手。为什么不将sshroot作为ssh -t root@10.3.2.0 ' echo "Give db name :" read db_name; echo "Give password :" read db_pass host=localhost sql1="create database \$db_name;" sql2="grant all on ${db_name}.* to ${db_name}@${host} identified by ${db_pass};" sql3="${sql1}${sql2}" mysql -p -e "${sql3}" '

{{1}}