ES6模板文字bash延续

时间:2017-10-26 04:38:43

标签: ecmascript-6

我刚刚在ES6模板文字中发现了这样做:

const template = `npm install \
&& npm start`;

将导致此npm install && npm start。这是因为一行末尾的\是"逃避"新线。

我对此感到非常恼火。

在bash和其他内容中,您可以使用\作为行继续符。所以你真的希望得到的字符串是:

npm install \
&& npm start

有没有办法解决这个问题?

2 个答案:

答案 0 :(得分:4)

\是字符串和模板文字中的转义字符。没有办法解决这个问题。

但是,您可以使用String.raw 标记的模板。 String.raw忽略转义序列并按字面意思返回它们。

const template = String.raw`npm install \
&& npm start`;
console.log(template);

但是,如果不进行修改,您仍然无法复制每个 bash命令。 Bash允许您通过${variable}语法引用变量。 ${...}在模板文字中是特殊的,这就是替换的执行方式。所以那些必须被转义,但这只适用于普通的模板文字或字符串。

答案 1 :(得分:1)

这给了我想要的结果

const template = `npm install \\
&& npm start`;

我对此并不满意。我将使用ES6模板文字生成Dockerfile,package.json等文件

我希望我可以直接将文件内容粘贴到文字中,无需修改即可保存插值位。

但我立即遇到了这个案子!