데이터베이스 및 WordPress 인스턴스를 생성한 다음 각 도메인에 대한 권한을 변경하고 서버를 다시 시작하는 것이 목적인 다음 스크립트를 어떻게 더 단축할 수 있습니까?
${domain}
스크립트 실행 시 매개변수로 전달한 도메인을 나타냅니다.
${drt}
문서 루트( /var/www/html
)를 나타냅니다.
#!/bin/sh
domain="$1"
echo "What's your DB root password?" && read -s dbrp
echo "What's your DB user password?" && read -s dbup
echo "CREATE USER "${domain}"@"localhost" IDENTIFIED BY \"${dbup}\";" | mysql -u root -p"${dbrp}"
echo "CREATE DATABASE ${domain};" | mysql -u root -p"${dbrp}"
echo "GRANT ALL PRIVILEGES ON ${domain}.* TO ${domain}@localhost;" | mysql -u root -p"${dbrp}"
cd ${drt}
curl -L http://wordpress.org/latest.tar.gz | tar -zxv -C ${domain}/
cp ${domain}/wp-config-sample.php ${domain}/wp-config.php
sed -i "s/database_name_here/${domain}"/g ${domain}/wp-config.php
sed -i "s/username_here/${domain}/g" ${domain}/wp-config.php
sed -i "s/password_here/${dbup}/g" ${domain}/wp-config.php
chown -R ${domain}:${domain} ${domain}/* && chmod -R a-x,a=rX,u+w ${domain}/* && systemctl restart nginx.service
2~3줄 정도 줄이는 게 목표인데 불가능할 수도 있을 것 같아요.
제 생각에는:
1)cd ${drt}
구문을 제거 하고 ${drt}
필요한 곳에 추가하기 시작했습니다.
2)다음과 같이 처음 2개의 sed를 병합합니다.
sed -i "s/_name_here/${domain}"/g ${domain}/wp-config.php
단축(결합)할 수 있는 다른 항목을 알고 있는지 궁금합니다.
답변1
4줄이 하나로 합쳐졌습니다.
cp ${domain}/wp-config-sample.php ${domain}/wp-config.php
sed -i "s/database_name_here/${domain}"/g ${domain}/wp-config.php
sed -i "s/username_here/${domain}/g" ${domain}/wp-config.php
sed -i "s/password_here/${dbup}/g" ${domain}/wp-config.php
대상(아래 주석에서 정규식을 수정하도록 편집)
sed "s/[a-z_]*name_here/${domain}/g;s/password_here/${dbup}/g" ${domain}/wp-config-sample.php > ${domain}/wp-config.php
다시 말하지만, 예제 구성 파일에 "name_here"와 일치하는 다른 문자열이 있는지 모르겠습니다. ;
한 줄에 여러 개의 sed 대체를 수행 할 수 있습니다 .
비밀번호를 묻는 것은 좋은 보안 조치이지만 나중에 명령줄에서 비밀번호를 사용하면 문제가 발생하므로 프로세스 환경의 명령줄에서 비밀번호를 지정할 수도 있습니다.
dbrp=mySillySecret dbup=mySecret myShortenedWordpressScript.sh example.com