나는 그와 같이 보이는 bash 스크립트를 만들고있다. 아이디어는 : mysql 사용자, 데이터베이스를 생성하고 새로 생성 된 db에 대해이 사용자에게 모든 권한을 부여하는 스크립트를 작성하는 것입니다.이상한 우분투 bash 문제
SED=`which sed`
CURRENT_DIR=`dirname $0`
if [ -z $1 ]; then
echo "No domain name given"
exit 1
fi
DOMAIN=$1
# check the domain is valid!
PATTERN="^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9])$";
if [[ "$DOMAIN" =~ $PATTERN ]]; then
DOMAIN=`echo $DOMAIN | tr '[A-Z]' '[a-z]'`
echo "Creating hosting for:" $DOMAIN
else
echo "invalid domain name"
exit 1
fi
echo "Do you want to create MySQL DB for Website (Y/n)?"
read CREATEDB
if [[ ($CREATEDB == "y") || (-z "$CREATEDB") ]]; then
echo "Enter MySQL root login (leave blank for default value - root):"
read MYSQLLOGIN
if [ -z "$MYSQLLOGIN" ]; then
MYSQLLOGIN="root"
fi
echo "Enter MySQL root PASS:"
read MYSQLROOTPASS
if [ -z "$MYSQLROOTPASS" ]; then
echo "No way without pass"
exit 1
fi
echo "Enter DB name (leave blank for default value - username_db):"
read MYSQLDB
if [ -z "$MYSQLDB" ]; then
MYSQLDB=$USERNAME"_db"
fi
echo "Enter password for newly created MySQL user (!ONLY if you have pwgen - sudo apt-get install pwgen! leave blank for auto password creation):"
read MYSQLPASS
if [ -z "$MYSQLPASS" ]; then
MYSQLPASS=$(pwgen -acn 10 1)
fi
mysql -h localhost -u $MYSQLLOGIN -p$MYSQLROOTPASS;
mysql> CREATE USER [email protected]'localhost' IDENTIFIED BY $MYSQLPASS;
mysql> create database $MYSQLDB;
mysql> grant usage on *.* to [email protected] identified by $MYSQLPASS;
mysql> grant all privileges on $MYSQLDB.* to [email protected] ;
else
exit 1
fi
echo -e "\nSite Created for $DOMAIN with PHP support\n Domain: "$DOMAIN"\n MySQL DB Name: "$MYSQLDB"\nMySQL Username : Pass"$USERNAME" : "$MYSQLPASS ;
내가 뭘 잘못하고 있니? 점점 다음 오류 :
코드를 수정 해 주실 수 있습니까? 나는 당신이 말한대로 여전히 동일한 오류가 발생했습니다 – heron
@heron 그'if'를 위해'fi' 문이 필요할 것 같습니다. – devnull
@devnull : 솔직히이 스크립트에는 * lot *이 없거나 누락되었습니다. 귀하의 인내심에 +1 ... – thkala