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

Escaping string interpolation in Dhall's multi-line strings

例如,我将如何转义以下字符串中的插值?

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}",但这似乎不适用于多行字符串。

谢谢。

您可以在 multi-line 字符串文字中转义 ${,方法是在其前面加上 '',如下所示:

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