如何在命令参数中放置CodeBuild环境变量



我的CodeBuild环境有一个环境变量DiscordWebhook。这包含一个明文形式的URL。我正在尝试运行sed命令,如下所示。这是在BuildSpec.yml文件中指定的。

sed -i 's/discordWebhookAddressLocal/${DiscordWebhook}/g' scripts.js

显然,这只是将discordWebhookAddressLocal的所有实例替换为"0"${DiscordWebhook}";。我尝试过其他一些方法,例如使用alias命令,但当我尝试执行别名时,CodeBuild失败,表示找不到该命令。

如何在命令中指定环境变量?

这可能是因为您使用的是单引号。通常,您会使用双引号来解析变量:

sed -i "s/discordWebhookAddressLocal/${DiscordWebhook}/g" scripts.js

事实证明,在我的案例中存在两个独立的问题。

首先,正如Marcin所指出的,在使用变量时应该使用双引号,而不是单引号。其次,有问题的环境变量是一个URL,其中有个字符。这与sed命令中用作分隔符的字符相同。为了解决这个问题,我更改了sed命令中使用的分隔符。

新的、完整的工作命令如下所示:

sed -i "s|discordWebhookAddressLocal|${DiscordWebhook}|g" scripts.js

commnad现在完全不返回错误,并按预期替换scripts.js中的字符串。

最新更新