我的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
中的字符串。