有需求,可以讓自己偷懶才是學習的真正動力。由於測試環境在構建代碼之后總是需要手動修改配置文件,因此邊學習邊完成了一個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