在 JS 模板字符串中转义 ${} 的正确方法

Proper way to escape ${} in a JS template string

我正在创建一个 bash 命令:

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

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

当然,我必须逃避它。我认为逃避它的最好方法是使用:

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

任何人都可以解释为什么这样做吗?

仅转义 $ 的工作原理与普通花括号不会引发错误的原因相同 — 模板字符串中的表达式在开头由 ${ 和 [=12= 标识] 在末尾。如果美元符号被转义,它不会被解释为 ${ 关键字的一部分,并且花括号被解释为普通字符。

因为反斜杠 \ 通常是转义符,在模板字符串中也是如此。它作为 ${ 序列的前缀,否则将被解释为定界符。