在Atlassian Bamboo中转义花括号

55次阅读
没有评论

问题描述

在Atlassian Bamboo中,你可以在脚本任务中使用特殊的Bamboo环境变量,比如当前构建号${bamboo.buildNumber}。但是我有这样的印象,如果我有一个类似${VAR}的代码片段,我想要将它传递给其他上下文,Bamboo的模板逻辑将会起作用,并将这部分渲染为空字符串。
证明:

echo "my foo ${VAR}!"

输出:

01-Feb-2018 20:47:58    my foo !

在这种情况下,是否有一种方法可以在这个上下文中转义花括号?

解决方案

请注意以下操作可能受版本差异影响。

方案1

根据你描述的情况,Bamboo在执行脚本之前会替换变量。如果想要在脚本中保留${VAR}而不被替换,可以通过转义$符号来实现。
使用以下命令来在脚本中保留${VAR}

echo "my foo \$VAR"

这样,$符号就会被转义,不会被解释成变量替换。

方案2

在Bamboo中,${VAR}$VAR是等价的,使用花括号的方式可以在拼接字符串时更明确地指示变量的边界。
然而,根据你的情况,似乎Bamboo可能对以bamboo.前缀的变量有特殊处理,可能导致其被替换为空字符串。为了解决这个问题,你可以尝试使用"${VAR}"的方式,这种方式在大多数情况下都能保留变量本身,而不会被解释为变量替换。你可以尝试以下命令来测试:

echo "${VAR}"
echo "${bamboo.VAR}"

请根据实际情况选择适合你的解决方案。如果你的Bamboo版本不同,也可能会导致行为差异,所以可以根据你的版本进行适当的尝试和调整。

请注意,如果Bamboo的解析和替换变量的行为在不同版本中存在差异,那么上述方案的适用性也可能会受到影响。建议你在尝试这些方案之前先备份相关脚本和配置,以防出现意外情况。

正文完