我想在Jenkins(v。2.17)構建步驟'Execute shell'中讀取gradle.properties文件中工件ID的值。Jenkins報告構建shell語法錯誤,但在bash中沒有錯誤
線要讀的是這樣的:artifactId = myArtifact
腳本命令我使用:
ARTIFACT_ID=$((grep -Po "(?<=^artifactId).*" gradle.properties) | tr -d '=' | tr -d ' ')
詹金斯作業失敗,此錯誤:
/tmp/hudson7118904411564834774.sh: 19: /tmp/hudson7118904411564834774.sh: Syntax error: Missing '))'
然而,我可以在作業的工作空間目錄中的相同構建機器上正確執行此命令行,並且在bash中有適當的用戶,而且我沒有語法錯誤!爲什麼它不在詹金斯工作?
我知道這條線因爲之前和之後的調試輸出而失敗。沒有改變目錄命令,即。腳本的工作目錄仍然是作業的工作空間目錄。
你爲什麼試圖在子shell中運行'grep'(括號中的分組表示你正在嘗試執行)?你根本不需要那些內在的圓括號。延斯解釋了你爲什麼會遇到語法錯誤;我不確定代碼是如何工作的 - 它不應該被我的清算(但我承認只是作爲Bash用戶而不是Bash程序)。 –