第一个shell脚本——修改配置文件
有需求,可以让自己偷懒才是学习的真正动力。由于测试环境在构建代码之后总是需要手动修改配置文件,因此边学习边完成了一个shell脚本,可以一键修改。
定义了一个函数,输出信息以绿色字体显示。
function echo_green { echo -e "\033[32m$1\033[0m" }
输出提示信息
echo_green "是否一键修改xxx?(y/n)"
读取键盘输入
read answer
要修改的配置文件有两类:一类是明确清楚应该修改哪些字符串,直接用替换字符串的方式,假如是/home/db.conf.php。另一类是对自己不熟悉的配置文件,修改一次之后直接保存该文件,每次构建代码后用修改的文件去覆盖,假如是/home/hosts。这种方式并不推荐,当该文件有新的改动时可能因被覆盖而无法生效,造成不必要的麻烦。
先判断输入,输入为y时进行修改
if [ "$answer" == "y" ]; then
1、修改字符串
sed -i "s/被替换的字符串/替换成的字符串/g" /home/db.conf.php echo_green "db.conf.php已修改"
tips:
①sed -i:sed命令加了 -i才会对原文件直接进行操作
②/g 是全部替代,否则只替代每行的第一个。
2、替换文件
假如我们将已经修改好的文件放于/home/ready/hosts
覆盖后需要修改文件属性以及文件拥有者及所属用户组
cp /home/ready/hosts /home/hosts sudo chmod 755 /home/hosts sudo chown deploy:deploy /home/hosts echo_green "hosts已修改"
全部修改完成后,输出提示信息
echo_green "已全部修改"
如果键盘输入信息不是y,则输出提示信息,退出
else echo_green "拜拜了您那" exit fi
完整代码
function echo_green { echo -e "\033[32m$1\033[0m" } echo_green "是否一键修改db.conf.php、hosts?(y/n)" read answer if [ "$answer" == "y" ]; then sed -i "s/被替换的字符串/替换成的字符串/g" /home/db.conf.php echo_green "db.conf.php已修改" cp /home/ready/hosts /home/hosts sudo chmod 755 /home/hosts sudo chown deploy:deploy /home/hosts echo_green "hosts已修改" echo_green "已全部修改" else echo_green "拜拜了您那" exit fi