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

时间:2019-07-09 20:49:27

标签: javascript node.js bash shell template-strings

我正在创建一个bash命令:

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

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

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

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

谁能解释为什么行得通?

2 个答案:

答案 0 :(得分:2)

仅转义$的原因与普通花括号不会引发错误的原因相同-模板字符串中的表达式由开头的${}标识结束。如果美元符号已转义,则不会将其解释为${关键字的一部分,并且花括号将被解释为普通字符。

答案 1 :(得分:1)

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