Экранирование интерполяции строк в многострочных строках Dhall - PullRequest
1 голос
/ 07 июля 2019

Например, как мне избежать интерполяции в следующей строке?

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

С немультистрочными строками, помещающими \ перед интерполяцией, работает , например, замена "Foo ${bar}" на "Foo \${bar}", но, похоже, это не работает с многострочными строками.

Спасибо.

1 Ответ

2 голосов
/ 07 июля 2019

Вы можете экранировать ${ в многострочном строковом литерале, предварительно добавив к нему '', например:

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
...