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"
おかげ
をあなたはおそらく*再び*バッククォートをエスケープする必要があります。シェルは、二重引用符で囲まれていない文字列を引用符で囲まないと、エスケープの最初のセットを取り除く可能性があります。それは外側に一重引用符を使用してください。リモートコマンド文字列に 'set -x'を追加すると、実際に実行されているコマンドを確認する必要があります。 –
ありがとう、私はあなたの助言を借りて、これは助けてくれました: ssh -t $ SSSSHUSER @ $ SSSSH "echo 'データベースを作成します。\' $ NEWDB \'; \ '$ NEWDB \ '。* TO $ SSMYSQLUSER @ $ SSMYSQLSERVER; |/usr/bin/mysql -u $ SSMYSQLUSER -p $ SSMYSQLPWD; " –