1

我已经创建了一个这样的 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=\"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} 前后使用了 \" 字符。请帮我解决这个问题。

谢谢。

4

1 回答 1

0

嵌套引用总是很棘手。你为什么不直接ssh把远程主机当成root

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}"
'
于 2013-03-07T15:20:32.200 回答