对子进程使用字符串命令

use string command to chid process

我想使用以下字符串并将其放入子进程中


make -qp | awk -F':' '/^[a-zA-Z0-9][^$#\/\t=]*:([^=]|$)/ {split(,A,/ /);for(i in A)print A[i]}' | sort -u

我能够在终端上成功地 运行 它但是当我把它用于子进程时我得到了错误:

我这样试试

let commandLine = "make -qp | awk -F':' '/^[a-zA-Z0-9][^$#\/\t=]*:([^=]|$)/ {split(,A,/ /);for(i in A)print A[i]}' | sort -u";
    try {
        let { stdout, stderr } = await exec(commandLine, { cwd: workspaceRoot });

有什么想法吗?

错误:

awk: nonterminated character class ^[a-zA-Z0-9][^$#
 source line number 1
 context is
     >>> /^[a-zA-Z0-9][^$#/ <<< 

这就是想法... How do you get the list of targets in a makefile?

反斜杠是 terminated at JS string,所以 \/ 只是 / 通过。

使用:

  • 字符串中的双反斜杠 \\/
  • 将字符串换成 raw backticks.

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals