2016-08-03 5 views
0

String.raw einen richtigen Weg scheint zu drucken, werden eingebetteter Befehl zu schreiben, wieWie ‚ 1‘ mit es6 String.raw

const command = String.raw`sed -n 's/${hash} \(.*\)/\1/p' 

Aber es funktioniert nicht, weil \1 nicht in String geschrieben werden kann .RAW, zeigt das Problem unter:

console.log(String.raw`\1`) 
=>SyntaxError: Octal literals are not allowed in template strings. 

console.log(String.raw`\\1`) 
\\1 
+1

sein sieht ein Vorschlag Es gibt die dies ermöglichen würde: https://github.com/tc39/proposal-template-literal-revision – Bakkot

Antwort

1

nur so kann ich sehen kann, tut es

ist
let x = '\\1' 
const command = String.raw`sed -n 's/${hash} \(.*\)/${x}/p'` 

@HBP ein ast machte die richtige Entscheidung in den Kommentaren

const command = String.raw`sed -n 's/${hash} \(.*\)/${'\\1'}/p'` 

die ideale

+0

I denke, das ist auch die einzige Lösung, danke – mko

+0

Es scheint, dass Sie das 'x' durch' \ 'ersetzen können, was die Notwendigkeit einer neuen Variablen überflüssig macht – HBP

+0

was meinst du @HBP? '$ {'\ 1'}'? nicht ganz ... aber '$ {'\\ 1'}' funktioniert –