我试图在travis-ci中使用一个环境变量,并在运行时使用sed替换文件的内容。
所涉档案包括:
service_name: travis-ci
repo_token: COVERALLS_TOKEN在ubuntu系统上,在命令行中使用sed -i 's/COVERALLS_TOKEN/ASDF/g' .coveralls.yml是可行的,但是将其传递到travis-ci配置(类似于sed -i 's/COVERALLS_TOKEN/$COVERALLS_TOKEN/g' .coveralls.yml )并不会拉出环境变量。
真正让我失望的是,我今天有了一个项目,下面的.travis.yml条目可以工作,但是根据这种情况调整它就不行了。
原始实现,至今仍在工作,
sed -ri 's/^MY_ENV_VAR=/MY_ENV_VAR='$MY_ENV_VAR'/' .env适应(不起作用)
sed -ri 's/^COVERALLS_TOKEN/$COVERALLS_TOKEN/' .coveralls.yml发布于 2017-05-12 18:57:30
你的命令有两个问题。首先,^意味着它只匹配在行的最开始处发生的COVERALLS_TOKEN。因为它不在YAML文件中行的开头,所以没有匹配,sed命令什么也不做。
第二,单引号中没有变量替换。
因此,删除^并使用双引号而不是单引号:
sed -ri "s/COVERALLS_TOKEN/$COVERALLS_TOKEN/" .coveralls.yml一些注意事项:
$COVERALLS_TOKEN命令时,必须在shell中设置变量sed。$COVERALLS_TOKEN的值包含您在替换命令中使用的分隔符,则替换将失败。上面的命令使用/,但如果需要,您可以更改它--只需选择标记字符串中没有发生的内容。发布于 2017-05-08 06:14:35
单引号禁止变量展开。
发布于 2021-10-20 07:20:56
这是对我有用的。
sed -ri 's,IMAGE_REPOSITORY,'"$IMAGE_REPO"',g' chart/values.yamlhttps://stackoverflow.com/questions/43839065
复制相似问题