我如何进一步缩短以下脚本,其目的是创建一个数据库 && 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
我想知道您是否认识其他可以缩短(统一)的内容。
4行合二为一:
到(编辑固定正则表达式后的评论)
再说一次,我不知道您的示例配置文件是否有其他与“name_here”匹配的字符串。
;
您可以在一行中使用多个 sed 替换。提示输入密码是一项很好的安全措施,稍后在命令行上使用它们会破坏这一点……所以您也可以在进程环境中在命令行上指定密码。