我有一个bitbucket管道配置,它通过用管道环境变量替换匹配的字符串来构建我的app.yaml文件。其中一些变量具有特殊字符并导致SED失败。我怎么能绕过这个?
我的管道脚本是这样的:
script:
- cp app.yaml.dist app.yaml
- cat app.yaml
- echo ${APP_GOOGLE_CLIENT_SECRET} > src/config/credentials/gcloud.json
- sed -i "s/\$DEBUG/$DEBUG/" app.yaml
- sed -i "s/\$DATABASE_URL/$STAGING_MONGOURL/" app.yaml
所以我从dist版本创建了一个app.yaml文件。然后我将app.yaml文件中的变量(例如$DEBUG
和$DATABASE_URL
)替换为存储在管道中的环境变量。
如果它有助于我的app.yaml文件环境变量部分基本上是这样的:
...
env_variables:
APP_DEBUG: $DEBUG
DATABASE_URL: $DATABASE_URL
...
我得到的错误是sed: -e expression #1, char 35: unknown option to 's'
提前致谢
答案 0 :(得分:1)
正如评论中所讨论的,您需要在变量中使用不中的一个特殊字符。
sed -i "s|\$DATABASE_URL|$STAGING_MONGOURL|" app.yaml
sed -i "s|\$DEBUG|$DEBUG|" app.yaml