由於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。
總算花了半天搞定。


隨意留個言吧:)~