我如何进一步缩短以下脚本,其目的是创建数据库&& 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