mysqlコマンドを使用したBashスクリプト、変数が失敗する

mysqlコマンドを使用したBashスクリプト、変数が失敗する

仮想ホストと関連データベースを複製するスクリプトがありますが、mysqlコマンドの1つは機能しません。失敗して有効な引数が渡されていないかのように、mysqlのバージョン番号と「使用方法」情報が印刷されますが、エラーは発生しません。

以下はスクリプトの短縮バージョンです。これは、新しいデータベースを作成し、失敗したときに権限を付与する必要がある行です。何が間違っているのか、どうすれば問題を解決できるのか、アドバイスをいただきありがとうございます。

ありがとうございます。

#!/bin/bash -e
clear
echo "MySQL Admin Password: "
read -s mysqlpass
echo "New Site name (short, a-zA-Z only)"
read -e newsitename
echo "Last chance - sure you want to run the script? (y/n)"
read -e run
if [ "$run" == y ] ; then

    # This command doesn't work
    dbsetup="CREATE DATABASE "$newsitename"_db;GRANT ALL PRIVILEGES ON "$newsitename"_db.* TO 'site_usr'@'localhost';FLUSH PRIVILEGES;"
    mysql -u root -p$mysqlpass -e "$dbsetup"

    mysqldump -u root -p$mysqlpass template_db > temp.sql

    dbimport=$newsitename"_db < temp.sql"
    mysql -u root -p$mysqlpass $dbimport

else
    exit
fi

ベストアンサー1

あなたは試すことができます:

dbsetup="CREATE DATABASE ${newsitename}_db;GRANT ALL PRIVILEGES ON ${newsitename}_db.* TO 'site_usr'@'localhost';FLUSH PRIVILEGES;"

二重引用符は文字列を破損します。

おすすめ記事