Bash 如何在Thoughtworks Go任务命令中解析环境变量

Bash 如何在Thoughtworks Go任务命令中解析环境变量,bash,thoughtworks-go,Bash,Thoughtworks Go,Thoughtworks Go提供了一组传递给每个任务的特定于作业的环境变量。 例如,我的作业输出的值与指定的值相同 [go] setting environment variable 'GO_ENVIRONMENT_NAME' to value 'rmp' [go] setting environment variable 'a' to value 'b' [go] setting environment variable 'GO_SERVER_URL' to value 'https://1

Thoughtworks Go提供了一组传递给每个任务的特定于作业的环境变量。 例如,我的作业输出的值与指定的值相同

[go] setting environment variable 'GO_ENVIRONMENT_NAME' to value 'rmp'
[go] setting environment variable 'a' to value 'b'
[go] setting environment variable 'GO_SERVER_URL' to value 'https://10.8.249.57:8154/go/'
我无法在bash任务命令中解析vars

[go] Start to execute task: <exec command="echo" >
<arg>${GO_SERVER_URL}</arg>
我试过

${GO_SERVER_URL}
${env.GO_SERVER_URL}
${go.GO_SERVER_URL}
$[GO_SERVER_URL]
$GO_SERVER_URL
"${GO_SERVER_URL}"
什么都不管用…

,声明:

请注意,这是一个普通的exec,而不是shell exec,因此[$FOO]不会产生预期的效果

最简单的解决方案:

command: /bin/bash

args:
-c
echo
$GO_SERVER_URL
另一种方法是简单地将脚本放入文件中


我为什么知道这个?因为我也遇到过它。

对于一个具有多个选项的命令,Go相当挑剔。tedder42的答案对于简单的echo案例是正确的,但对于我使用多参数curl的实际问题,它并不适用于我。斯里尼瓦斯·乌帕迪亚帮了我的忙。我想在这里为其他人记录它,这样很容易找到。这看起来很明显,但小的偏差不起作用

按如下方式输入命令:

XML应该如下所示:

<tasks>
  <exec command="/bin/bash">
    <arg>-c</arg>
    <arg>curl -o test.file $GO_VAR</arg>
    <runif status="passed" />
  </exec>
  ....
</tasks>

-c
curl-o test.file$GO\u VAR
....

简单且无需动脑筋。我希望我能早点发现这个。谢谢你,伙计。
<tasks>
  <exec command="/bin/bash">
    <arg>-c</arg>
    <arg>curl -o test.file $GO_VAR</arg>
    <runif status="passed" />
  </exec>
  ....
</tasks>