Script Bash usando o comando mysql com variáveis falhando

0

Eu tenho um script para clonar um vhost e um db associado - no entanto, um dos comandos mysql não funciona. Ele falha e termina produzindo o número da versão do mysql e 'como usar' informações como se não tivessem passado argumentos válidos - nenhum erro é dado.

Uma versão abreviada do script está abaixo - é a linha que deve criar o novo banco de dados e conceder privilégios que estão falhando. Eu apreciaria qualquer orientação sobre o que eu tenho errado ou como rastrear o problema.

Obrigado.

#!/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
    
por phil 25.04.2016 / 22:51

1 resposta

1

Você pode tentar:

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

As aspas duplas corromperão sua string.

    
por 25.04.2016 / 23:24