Bash-скрипт с использованием команды mysql с переменными не работает

У меня есть скрипт для клонирования vhost и связанной с ним базы данных - однако одна из команд mysql не работает. Он терпит неудачу и выводит номер версии 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
0
25.04.2016, 23:51
1 ответ

Этот работал у меня в сценарии оболочки:

environment_id=10

mysql -u root -proot dbname -e "update environment SET deployment_status = 1 WHERE environment_id = '${environment_id}'";
0
28.01.2020, 02:48

Теги

Похожие вопросы