1

For example, how would I escape the interpolation in the following string?

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

With non-multiline strings putting \ in front of the interpolation works, e.g., replacing "Foo ${bar}" with "Foo \${bar}", but this doesn't seem to work with multi-line strings.

Thanks.

sbdchd
  • 580
  • 1
  • 7
  • 18

1 Answers1

3

You can escape ${ within a multi-line string literal by prefacing it with '', like this:

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
Gabriella Gonzalez
  • 34,863
  • 3
  • 77
  • 135