2013-07-10 70 views
8

我試圖爲Jenkins環境變量指定一個值(如在Manage Jenkins - > Configure System屏幕上,在標題「全局屬性」下創建的)其中包含一個空間。我想在Execute Shell構建步驟中使用這個環境變量。我需要出現在構建步驟的命令行選項是:如何爲包含空格的Jenkins環境變量指定值

--platform="Windows 7" 

我使用的命令行上的語法是--platform=${VARIABLE_NAME}

無論我如何試圖對其進行格式化,詹金斯似乎重新格式化它,以便將其視爲兩個值。我曾嘗試:

  • 視窗7
  • 「視窗7」
  • '視窗7'
  • 的Windows \ 7

相應的結果,當在執行shell建立步驟輸出已經:

  • --platform = Windows 7
  • '--platform =「視窗 '7" '
  • '--platform =' \ '' 視窗 '7' \ '''
  • --platform =視窗/ 7

我也嘗試將我的命令行語法更改爲--platform='${VARIABLE_NAME}'以及'--platform=${VARIABLE_NAME}',但在每種情況下,${VARIABLE_NAME}根本沒有解析,只是在結果命令上顯示爲${VARIABLE_NAME}

我希望有一種方法可以使這項工作。任何建議都非常感謝。

回答

6

您應該可以在全局屬性部分使用沒有任何特殊字符的空格。

例如,我設置了一個變量「THIS_VAL」以具有值「HAS SPACES」。

我的測試版本的工作是以下幾點:

#!/bin/bash 
set +v 
echo ${THIS_VAL} 
echo "${THIS_VAL}" 
echo $THIS_VAL 

和輸出是

[workspace] $ /bin/bash /tmp/hudson8126983335734936805.sh 
HAS SPACES 
HAS SPACES 
HAS SPACES 
Finished: SUCCESS 

我認爲你需要做的是使用下列內容:

--platform="${VARIABLE_NAME}" 

注:使用報價,而不是單q uotes。使用單引號將引用內的東西寫入文本中,這意味着任何變量都將按原樣打印,而不會解析爲實際值。因此,「$ {VARIABLE_NAME}」將按原樣打印,不會解析爲「Windows 7」。


編輯: 基於以下@BobSilverberg評論,請使用以下:

--platform="$VARIABLE_NAME" 

注:沒有大括號。

+1

謝謝薩加爾。在我嘗試的所有組合中,那不是其中之一。它確實結束了工作,但我必須指定'--platform =「$ VARIABLE_NAME」'。如果我使用了「--platform =」$ {VARIABLE_NAME}「',它會在其中隱藏一些額外的引號,所以結果是'--platform ='''Windows 7''''''。 – BobSilverberg

+0

太棒了!我會在答案中發佈更正。謝謝! – Sagar