Just My Life & My Work

現學現賣 Shell Script

由於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. 語法:為了良好閱讀,空白符號也會出錯
  2. 平台:明明沒有語法錯誤,執行卻顯示錯誤

1. 的解法就真的要照規矩來,比如

currentVersion="${version[1]}"

寫這樣就不行⋯⋯

currentVersion = “${version[1]}"

2. 則是找另一個線上網頁Bash Shell Script Online:https://www.jdoodle.com/test-bash-shell-script-online

總算花了半天搞定。

參考:[鐵人賽第01天] 什麼是 Shell ,有哪些 ShellLearning Shell Scripting

廣告

隨意留個言吧:)~

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com 標誌

您的留言將使用 WordPress.com 帳號。 登出 /  變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 /  變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 /  變更 )

連結到 %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.

標籤雲

%d 位部落客按了讚: