2013-03-07 49 views
1

我已经创建了一个类似this的shell脚本。但是在授予命令时出现语法错误,我想附近的密码区域。请帮助我,如果有人可以。在shell脚本的密码区域附近授予命令语法错误

ssh -t [email protected] ' 
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命令返回错误。我的猜测是错误可能是由于\”字符之前和$ {} DB_PASS在授权command.Please就帮我解决了这个后使用的。

感谢。

回答

0

嵌套报价始终是棘手。为什么你不只是ssh到远程主机为root

ssh -t [email protected] ' 
    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}" 
'