【问题标题】:Proper way to escape ${} in a JS template string在 JS 模板字符串中转义 ${} 的正确方法
【发布时间】:2019-11-19 11:14:00
【问题描述】:

我正在创建一个 bash 命令:

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

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

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

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

谁能解释一下为什么会这样?

【问题讨论】:

  • 因为规格是这样说的......
  • 这到底有什么出人意料的?
  • 如果您不需要它,为什么还要使用模板字符串。只需使用单引号即可。
  • @Keith bash 命令同时使用单引号和双引号,因此需要转义那些
  • @Alexander 你的第二个代码块中应该有反引号(`)吗?

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


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2014-04-27
      • 2018-03-24
      • 2011-01-05
      • 2019-07-28
      • 2014-02-17
      • 1970-01-01
      • 2011-09-08
      • 2016-10-28
      • 2010-11-19
      相关资源
      最近更新 更多