Правильный способ избежать $ {} в строке шаблона JS - PullRequest
0 голосов
/ 09 июля 2019

Я создаю команду bash:

const k = cp.spawn('bash');

k.stdin.end(`
  alias ssh='ssh "${SSH_ARGS[@]}"'
`);

но, конечно, я должен избежать этого. Я предполагаю, что лучший способ избежать этого - использовать:

 `alias ssh='ssh "\${SSH_ARGS[@]}"'`

Кто-нибудь может объяснить, почему это работает?

Ответы [ 2 ]

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

Исключение только $ работает по тем же причинам, по которым обычные фигурные скобки не выдают ошибок - выражение в строке шаблона идентифицируется как ${ в начале и } в конце. Если знак доллара экранирован, он не интерпретируется как часть ключевого слова ${, а фигурные скобки интерпретируются как нормальные символы.

1 голос
/ 09 июля 2019

Поскольку обратная косая черта \, как обычно, является escape-символом, также в шаблонных строках. Это префикс последовательности ${, которая в противном случае интерпретировалась бы как разделитель.

...