【问题标题】:How can I escape special characters in a string when using SED stream editor使用 SED 流编辑器时如何转义字符串中的特殊字符
【发布时间】:2017-11-02 10:01:00
【问题描述】:

我有一个 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'

提前致谢

【问题讨论】:

标签: bash sed gnu


【解决方案1】:

如 cmets 中所述,您需要在变量中使用 not 的特殊字符之一。

sed -i "s|\$DATABASE_URL|$STAGING_MONGOURL|" app.yaml
sed -i "s|\$DEBUG|$DEBUG|" app.yaml

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-08
    • 2021-01-09
    • 1970-01-01
    • 2021-11-17
    • 1970-01-01
    • 2011-05-11
    相关资源
    最近更新 更多