2016-04-14 8 views
0

私は、このコマンドでトラブルを抱えておいてください。バッシュスクリプトSSHとにダッシュを使用してデータベースを作成し、それ

ssh -t [email protected]$SSSSH "echo \"CREATE DATABASE \`$NEWDB\`; GRANT ALL ON \`$NEWDB\`.* TO '$SSMYSQLUSER'@'$SSMYSQLSERVER';\" | /usr/bin/mysql -u$SSMYSQLUSER -p$SSMYSQLPWD ;" 

-は、データベース名に存在しているとき、私は、データベースの作成に失敗したバッククォートをエスケープしてもカントー。任意のアイデアをどのように構文を修正するには?

実行している場合は、このローカルですべての作品:この1つはセット-xでデバッグした後に働いた

echo "CREATE DATABASE \`$NEWDB\`; GRANT ALL ON \`$NEWDB\`.* TO '$MYSQLUSER'@'localhost';" | /Applications/MAMP/Library/bin/mysql -u"$MYSQLUSER" -p"$MYSQLPWD" 

おかげ

+0

をあなたはおそらく*再び*バッククォートをエスケープする必要があります。シェルは、二重引用符で囲まれていない文字列を引用符で囲まないと、エスケープの最初のセットを取り除く可能性があります。それは外側に一重引用符を使用してください。リモートコマンド文字列に 'set -x'を追加すると、実際に実行されているコマンドを確認する必要があります。 –

+0

ありがとう、私はあなたの助言を借りて、これは助けてくれました: ssh -t $ SSSSHUSER @ $ SSSSH "echo 'データベースを作成します。\' $ NEWDB \'; \ '$ NEWDB \ '。* TO $ SSMYSQLUSER @ $ SSMYSQLSERVER; |/usr/bin/mysql -u $ SSMYSQLUSER -p $ SSMYSQLPWD; " –

答えて

0

ssh -t [email protected]$SSSSH "echo 'CREATE DATABASE \`$NEWDB\`; GRANT ALL ON \`$NEWDB\`.* TO [email protected]$SSMYSQLSERVER;' | /usr/bin/mysql -u$SSMYSQLUSER -p$SSMYSQLPWD ; " 
関連する問題