【发布时间】:2016-04-14 11:52:47
【问题描述】:
我一直遇到这个命令的问题:
ssh -t $SSSSHUSER@$SSSSH "echo \"CREATE DATABASE \`$NEWDB\`; GRANT ALL ON \`$NEWDB\`.* TO '$SSMYSQLUSER'@'$SSMYSQLSERVER';\" | /usr/bin/mysql -u$SSMYSQLUSER -p$SSMYSQLPWD ;"
即使我避开了反引号,当数据库名称中出现- 时,数据库创建也会失败。任何想法如何修复语法?
在本地运行时一切正常:
echo "CREATE DATABASE \`$NEWDB\`; GRANT ALL ON \`$NEWDB\`.* TO '$MYSQLUSER'@'localhost';" | /Applications/MAMP/Library/bin/mysql -u"$MYSQLUSER" -p"$MYSQLPWD"
谢谢
【问题讨论】:
-
您可能需要再次转义反引号。当 shell 取消引用双引号字符串时,它可能会剥离第一组转义。那或在外面使用单引号。将
set -x添加到远程命令字符串中,您应该会看到实际正在运行的命令。 -
谢谢你的建议,这有助于:ssh -t $SSSSHUSER@$SSSSH "echo 'CREATE DATABASE `$NEWDB`; GRANT ALL ON `$NEWDB`.* TO $SSMYSQLUSER@$SSMYSQLSERVER ;' | /usr/bin/mysql -u$SSMYSQLUSER -p$SSMYSQLPWD ; "