由於Jenkins中需要寫Shell Script來陸續執行某些動作,簡單的都已經打好收工,不過就在要Git Pull下來Release Branch時發生問題,其實就只是想要獲取特定的Branch,只是需要寫點邏輯流程。若是使用最熟悉的Objective C語言肯定沒問題,現在得以Shell Script來實現,不太曉得語法規則的我,只好現學現賣 Shell Script:P~
想要嘗試寫Shell Script?好在現今網路發達,Bash Shell Script Online信手粘來就能邊寫邊執行。
網址:https://www.jdoodle.com/test-bash-shell-script-online
Shell Script主要用途就是用來協助使用者在UNIX or Linux環境上,以更方便、更自動化的方式來執行想要執行的指令,它也可以很快速的協助使用者 or 管理者大量地執行重複性的動作與指令。做為一個系統管理者,學會Shell Script絕對可以事半功倍。
想起研究所時代,為了實驗影像處理演算法,在Windows上寫簡單的指令。
接下來實現我要的功能吧!
執行後顯示:
最後就是取得這個Branch:release/2_11_0。
可參考原始碼:
/** Theme: Find Version IDE: None Language: Bash Shell Script Date: 108/06/12 Author: HappyMan Blog: https://cg2010studio.com/ */ arr=("release/0_9_0" "release/1_11_6" "release/1_11_1" "debug/1_11_6" "release/1_11_2" "release/2_11_0" "release/1_11_4" "release/1_11_5") currentVersion="" for ((i=0; i < ${#arr[@]}; i++)) do if [[ ${arr[$i]} == *"release"* ]]; then version=($(echo "${arr[$i]}" | tr '/' '\n')) ### 印出 array 的 key 及 value echo $i ${arr[$i]} if [ "$currentVersion" = "" ]; then currentVersion="${version[1]}" echo "####" echo "#currentVersion" "$currentVersion" fi currentNumber=($(echo "$currentVersion" | tr '_' '\n')) echo "currentNumber" "${currentNumber[1]}" number=($(echo "${version[1]}" | tr '_' '\n')) echo "number" "${number[1]}" if ((currentNumber[0]<number[0])); then echo "第一個別人大" currentVersion="${version[1]}" else if ((currentNumber[0]==number[0])); then # 第一個一樣 echo "第一個一樣" if ((currentNumber[1]<number[1])); then echo "第二個別人大" currentVersion="${version[1]}" else if ((currentNumber[1]==number[1])); then # 第二個一樣 echo "第二個一樣" if ((currentNumber[2]<number[2])); then echo "第三個別人大" currentVersion="${version[1]}" else echo "QQ" fi else echo "XXXXX2小的不管" fi fi else echo "XXXXX1小的不管" fi fi fi done echo "#currentVersion" "release/$currentVersion"
我遇到的坑有兩個:
- 語法:為了良好閱讀,空白符號也會出錯
- 平台:明明沒有語法錯誤,執行卻顯示錯誤
1. 的解法就真的要照規矩來,比如
currentVersion="${version[1]}"
寫這樣就不行⋯⋯
currentVersion = “${version[1]}"
2. 則是找另一個線上網頁Bash Shell Script Online:https://www.jdoodle.com/test-bash-shell-script-online。
總算花了半天搞定。
隨意留個言吧:)~