首页 > 解决方案 > 该脚本在终端中运行,但不适用于 js exec()

问题描述

echo git@github.com:hasantezcan/journey-of-2021.git | sed -e "s/:/\//g" -e "s/ssh\/\/\///g" -e "s/git@/https:\/\//g"

此代码正在终端上运行。

但是,如果我尝试使用 javascript exec()运行该脚本,则会出现这样的错误。

Error: Command failed: echo git@github.com:hasantezcan/journey-of-2021.git | sed -e "s/:///g" -e "s/ssh/////g" -e "s/git@/https:///g"
sed: -e expression #1, char 6: unknown option to `s'

    at ChildProcess.exithandler (child_process.js:308:12)
    at ChildProcess.emit (events.js:315:20)
    at maybeClose (internal/child_process.js:1048:16)
    at Socket.<anonymous> (internal/child_process.js:439:11)
    at Socket.emit (events.js:315:20)
    at Pipe.<anonymous> (net.js:673:12) {
  killed: false,
  code: 1,
  signal: null,
  cmd: 'echo git@github.com:hasantezcan/journey-of-2021.git | sed -e "s/:///g" -e "s/ssh/////g" -e "s/git@/https:///g"'
}
++++++stdout:    
```````stderr:   sed: -e expression #1, char 6: unknown option to `s'

这是代码

await exec(
        `echo git@github.com:hasantezcan/journey-of-2021.git | sed -e "s/:/\//g" -e "s/ssh\/\/\///g" -e "s/git@/https:\/\//g"`,
        (error, stdout, stderr) => {
          console.log("linux test");
          console.log("------error:    ", error);
          console.log("++++++stdout:   ", stdout);
          console.log("```````stderr:  ", stderr);
        }
      );

我怎样才能弄清楚?

标签: node.jsregexexec

解决方案


使用此固定代码:

await exec(
        String.raw`echo git@github.com:hasantezcan/journey-of-2021.git | sed -e "s/:/\//g" -e "s/ssh\/\/\///g" -e "s/git@/https:\/\//g"`,
        (error, stdout, stderr) => {
          console.log("linux test");
          console.log("------error:    ", error);
          console.log("++++++stdout:   ", stdout);
          console.log("```````stderr:  ", stderr);
        }
      );

推荐阅读