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

Ale*_*lls 6 javascript bash shell node.js template-strings

我正在创建一个 bash 命令:

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

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

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

 `alias ssh='ssh "\${SSH_ARGS[@]}"'`
Run Code Online (Sandbox Code Playgroud)

谁能解释为什么会这样?

Iro*_*are 8

$出于与普通大括号不会抛出错误相同的原因,仅对作品进行转义——模板字符串中的表达式由${开头和}结尾标识。如果美元符号被转义,它不会被解释为${关键字的一部分,并且大括号被解释为普通字符。