RexHung's Blog

塵世中一個前端迷途小書僮!

0%

[Shell Script Note] — 教你如何一鍵部署 env, 兩分鐘就學會

Shell Script?

Introduction & 前言

寫了一陣子的程式碼,你有沒有曾經想過,有時候我們能像 git pullgit push…這樣輸入完指令就完成所有你預期內的步驟嗎?

這篇文章將帶你簡單入們一鍵指令,就可以完成你需要完成的任務。


Summary & 摘要

ENV

開始前先說說為何有寫這篇文章的動機;起因為筆者在工作上目前會有好幾個專案用到同一份專案的程式碼,簡單說就是好幾個不同家的廠商(A端)會打同一個專案的 API(B端)。

而在開發時我們本地只會留一個 B端 專案,上線才會一個專案(A端)配一個 API 專案(B端),而在本地我們就是靠切換 API(B端)的 ENV 去切換目前需要用到哪個會用到的資訊,像是資料庫

但這篇文章最主要還是作為自己的筆記使用,記錄下如何透過 Shell Script 去一鍵執行我需要的任務。


何謂 Shell Script

Shell 是文字介面底下我們與系統溝通的一個工具介面,而 Script 即為腳本、劇本,就是針對 Shell 寫的腳本。


如何製作腳本並執行

在我們一鍵部署前,還是必須先寫好任務內容,這邊會用筆者工作上的例子來舉例。

  1. 先至隨便在一個你會記得的地方建立之後要一鍵啟動任務執行的 sh 檔案,touch /你的路徑/update_api_env.sh

  2. 編輯這支 sh 檔案,vim update_api_env.sh

1
2
3
4
5
#!/bin/bash
# 更改資料庫位置
sed -i '' -e "s/DB_DATABASE=.*/DB_DATABASE=$1_db/1" /路徑1/.env
sed -i '' -e "s/DB_DATABASE=.*/DB_DATABASE=$1_db/1" /路徑2/.env
sed -i '' -e "s/DB_DATABASE=.*/DB_DATABASE=$1_db/1" /路徑3/.env

在開頭的 #!/bin/bash 則為 Shell Script 的起手式。

  1. Terminal 輸入 vim ~/.zshrcvim ~/.bashrc,接著加入下面的自定義快捷鍵(關鍵字)。
1
2
# 自定義快捷鍵
alias upEnv='sh /你的路徑/update_api_env.sh';

在這邊的自定義快捷鍵(關鍵字)也可加入許多自己平常會用到的指令,像是開頭提過的 git pullgit push…等等。

1
2
3
4
5
alias gis='git status';
alias gia='git add -A';
alias gic='git commit';
alias gipl='git pull origin';
alias giph='git push origin';
  1. 關掉你的 Terminal 然後重新開啟。

  2. 輸入剛剛取的快捷鍵名稱(關鍵字) upEnv xxx 就會替換成功了。


如何防呆

這時候如果我們只有輸入 upEnv 其實是會更改成功的,所以我們必須做一些防呆措施。

在我們提到的 Shell Script 其實也可以像我們寫 php 或是 JS 一樣寫一些判斷式,這邊提供一個範例:

1
2
3
4
5
6
if [ ! -n "$1" ] ; then
echo "Error: You need type keyword to change env!"
else
# DO something...
echo "Success: Already changed -> $1"
fi

這邊有幾個雷需要注意,Shell Script 每個判斷每個值 建議都留一個空白鍵跟下個值做區隔,不然容易報錯。

$1 的意思為輸入指令時空白鍵後第一個參數,舉例來說在上面我們設定啟動這個執行檔的關鍵字為 upEnv,如果你輸入 upEnv Hello WorldHello 將會是第一個變數($1),World 將會是第二個變數($2),以此類推…


加上絢麗的效果

這邊會看到 echo 出來的東西有點單調,就是單純的文字,如果有設定錯誤提醒,或許不夠明顯。

好在我們可以對 echo 設定顏色,加入的指令為:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
echo -e "\033[30m文字字串\033[0m"   --> 黑色字
echo -e "\033[31m文字字串 \033[0m" --> 紅色字
echo -e "\033[32m文字字串 \033[0m" --> 綠色字
echo -e "\033[33m文字字串 \033[0m" --> 黃色字
echo -e "\033[34m文字字串 \033[0m" --> 藍色字
echo -e "\033[35m文字字串 \033[0m" --> 紫色字
echo -e "\033[36m文字字串 \033[0m" --> 天藍字
echo -e "\033[37m文字字串 \033[0m" --> 白色字

echo -e "\033[40;37m文字字串\033[0m" --> 黑底白字
echo -e "\033[41;37m文字字串\033[0m" --> 紅底白字
echo -e "\033[42;37m文字字串\033[0m" --> 綠底白字
echo -e "\033[43;37m文字字串\033[0m" --> 黃底白字
echo -e "\033[44;37m文字字串\033[0m" --> 藍底白字
echo -e "\033[45;37m文字字串\033[0m" --> 紫底白字
echo -e "\033[46;37m文字字串\033[0m" --> 天藍底白字
echo -e "\033[47;30m文字字串\033[0m" --> 白底黑字

Echo Color


Conclusion & 結論

這邊文章簡短的介紹如何使用快捷鍵一鍵更換 ENV,這次在工作上托同事的福又學了一招,趁記憶猶新趕緊記錄下來,這會是一個實用的功能!


參考網站