shell 使用陣列及字串擷取

雪花飄發表於2019-02-01

最近程式碼釋出要遷移到 jenkins,需要寫一個構建指令碼模板提供給研發人員,用python寫可能對研發和測試提高了使用門檻,只能用shell了

  • 陣列
    百度了一下發現 shell使用的陣列定義是用括號起來的,不同元素之意用空格分開,ex: test.sh arr=('aa' 'bb' 'cc')
    執行 sh test.sh的時間老是報這個陣列的括號語法錯誤 Syntax error: "(" unexpected,百度了一下發現是shell的原因
    file
    使用 bash test.sh就沒有問題了,使用 ${arr[0]} 來取值
  • 字串擷取
    在 git 倉庫裡 使用 git checkout -f commitid ,結果如下:
    HEAD is now at 9f212321... test deploy script
    目的是想要獲取 commit 提交資訊的,因為第一次拉程式碼執行這個命令時,在這行上面還會有其它資訊,所以在取最後一行,最後一行 hash(9f212321...) 後面的內容就是我們想的提交資訊,使用命令:
    hash_msg=`git checkout -f ${commit_hash} 2>&1 | tail -1`
    hash_msg=${hash_msg#*...}
    echo "Commit message: ${hash_msg}"

    使用管理的加上 tail -1 來獲取最後一行,如果沒有加上 2>&1 這個最後一行是無法賦值給 hash_msg的,具體原因還不明,最後使用 ${hash_msg#*...} 來獲取資訊,# 表示操作符,*... 表示從左到右匹配 ...,擷取 ... 後面的字元,參考 https://baijiahao.baidu.com/s?id=1606425493933114713&wfr=spider&for=pc

雪花飄

相關文章