2017-05-12 3 views
0

これは簡単なはずですが、動作させることができません。 私はbashの(SH)を使用して、当社のサーバー上の解放手順を自動化しています:MySQLからストライプをエスケープするコマンドを実行する

#!/bin/bash 

oldDatabase=${1:-} 
newDatabase=${2:-} 
dbPassword=${3:-} 
dbuser=${4:-} 

if [ ! -z $oldDatabase ] ; then 


     mysql -u "$dbuser" "-p$dbPassword" -e "CREATE DATABASE IF NOT EXISTS $newDatabase" 
     mysqldump -u "$dbuser" "-p$dbPassword" $oldDatabase | mysql -u "$dbuser" "-p$dbPassword" $newDatabase; 
else 
     echo "DB file: '$oldDatabase' not found/given!" 
fi 

これはtest_somethingのようなデータベース名、blablaなどのための素晴らしい作品...

をただし、データベースの現在の名前をその中にたくさんの縞模様があります:rel-3-3-0.dev。私はこれを動作させることができません、私はコマンドでSQLエラーを取得し続けます。 (MySQLでERROR 1064)

私は、クエリ内のストライプは、コマンドラインMySQLの変種で受け入れられないと思うので、私はバッククォートを追加しました:

mysql -u "$dbuser" "-p$dbPassword" -e "CREATE DATABASE IF NOT EXISTS `$newDatabase`" 

しかし、これはどちらかで動作するようには思えないのですか? (MySQLのエラー1064)


これを行うにはどんな方法がありますか?

答えて

0

気にしない、このように動作するように思える:

mysql -u "$dbuser" "-p$dbPassword" -e "CREATE DATABASE IF NOT EXISTS \`$newDatabase\`" 
関連する問題