mysql 명령을 사용하는 Bash 스크립트, 변수가 실패함

mysql 명령을 사용하는 Bash 스크립트, 변수가 실패함

가상 호스트 및 관련 데이터베이스를 복제하는 스크립트가 있지만 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

답변1

당신은 시도 할 수 있습니다:

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

큰따옴표로 인해 문자열이 손상됩니다.

답변2

이것은 쉘 스크립트에서 작동합니다.

environment_id=10

mysql -u root -proot dbname -e "update environment SET deployment_status = 1 WHERE environment_id = '${environment_id}'";

관련 정보