如何为包含空格的Jenkins环境变量指定值

Bob*_*erg 9 environment-variables jenkins

我正在尝试为包含空格的Jenkins环境变量(在Manage Jenkins - > Configure System屏幕上,在"Global properties"标题下创建)指定一个值.我想在Execute Shell构建步骤中使用此环境变量.我需要在构建步骤中出现在命令行中的选项是:

--platform="Windows 7"
Run Code Online (Sandbox Code Playgroud)

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

无论我如何尝试格式化,Jenkins似乎都重新格式化它,以便将其视为两个值.我试过了:

  • Windows 7的
  • "Windows 7的"
  • 'Windows 7的'
  • Windows 7的

在Execute Shell构建步骤期间输出时的相应结果是:

  • --platform = Windows 7
  • '--platform ="Windows''7"'
  • '--platform ='\''Windows''7'\'''
  • --platform = Windows/7

我也试图改变我的命令行语法--platform='${VARIABLE_NAME}'以及'--platform=${VARIABLE_NAME}',但在每个这些情况下,${VARIABLE_NAME}根本没有被解决,只是表现为${VARIABLE_NAME}对所得到的命令.

我希望有一种方法可以使这项工作.任何建议都非常感谢.

Sag*_*gar 8

您应该能够在全局属性部分中使用没有任何特殊字符的空格.

例如,我将变量"THIS_VAL"设置为具有"HAS SPACES"值.

我的测试构建工作如下:

#!/bin/bash
set +v
echo ${THIS_VAL}
echo "${THIS_VAL}"
echo $THIS_VAL
Run Code Online (Sandbox Code Playgroud)

而输出是

[workspace] $ /bin/bash /tmp/hudson8126983335734936805.sh
HAS SPACES
HAS SPACES
HAS SPACES
Finished: SUCCESS
Run Code Online (Sandbox Code Playgroud)

我想你需要做的是使用以下内容:

--platform="${VARIABLE_NAME}"
Run Code Online (Sandbox Code Playgroud)

注意:使用引号,而不是单引号.使用单引号使得内容在引号文本中,这意味着任何变量将按原样打印,而不是解析为实际值.因此,"$ {VARIABLE_NAME}"将按原样打印,而不会解析为"Windows 7".


编辑: 根据下面的@BobSilverberg评论,使用以下内容:

--platform="$VARIABLE_NAME"
Run Code Online (Sandbox Code Playgroud)

注意:没有花括号.