在Dhall的多行字符串中转义字符串插值

时间:2019-07-06 23:43:56

标签: dhall

例如,如何在以下字符串中转义插值?

let foo =
      ''
      docker login -u "$DOCKER_USER" -p "$DOCKER_PASS"
      docker build -f frontend/Dockerfile-prod \
        --build-arg OAUTH_GITHUB_CLIENT_ID=${OAUTH_GITHUB_CLIENT_ID-""} \
        --build-arg OAUTH_GITLAB_CLIENT_ID=${OAUTH_GITLAB_CLIENT_ID-""} \
        --build-arg OAUTH_GOOGLE_CLIENT_ID=${OAUTH_GOOGLE_CLIENT_ID-""}
      ''

in foo

使用non-multiline strings putting \ in front of the interpolation works,例如将"Foo ${bar}"替换为"Foo \${bar}",但这似乎不适用于多行字符串。

谢谢。

1 个答案:

答案 0 :(得分:2)

您可以通过用${开头在多行字符串文字中对''进行转义,如下所示:

let foo =
      ''
      docker login -u "$DOCKER_USER" -p "$DOCKER_PASS"
      docker build -f frontend/Dockerfile-prod \
        --build-arg OAUTH_GITHUB_CLIENT_ID=''${OAUTH_GITHUB_CLIENT_ID-""} \
        --build-arg OAUTH_GITLAB_CLIENT_ID=''${OAUTH_GITLAB_CLIENT_ID-""} \
        --build-arg OAUTH_GOOGLE_CLIENT_ID=''${OAUTH_GOOGLE_CLIENT_ID-""}
      ''

in foo