2013-07-10 55 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