Node.js 在nodejs中执行shell命令时出现意外错误

Node.js 在nodejs中执行shell命令时出现意外错误,node.js,sh,Node.js,Sh,我正试图从nodejs(Linux中)执行以下命令 但我得到以下输出 Error: Command failed: cd "/tmp/export/lessons/4/content/RES-52298196-ce0f-4d91-8aa5-53f4f8e4ecb9/ui" && rm -r !("M345") /bin/sh: -c: riga 0: errore di sintassi vicino al token non atteso "(" /bin/sh: -c: ri

我正试图从nodejs(Linux中)执行以下命令

但我得到以下输出

Error: Command failed: cd "/tmp/export/lessons/4/content/RES-52298196-ce0f-4d91-8aa5-53f4f8e4ecb9/ui" && rm -r !("M345")
/bin/sh: -c: riga 0: errore di sintassi vicino al token non atteso "("
/bin/sh: -c: riga 0: `cd "/tmp/export/lessons/4/content/RES-52298196-ce0f-4d91-8aa5-53f4f8e4ecb9/ui" && rm -r !("M345")'
    at ChildProcess.exithandler (child_process.js:303:12)
    at ChildProcess.emit (events.js:321:20)
    at ChildProcess.EventEmitter.emit (domain.js:485:12)
    at maybeClose (internal/child_process.js:1026:16)
    at Socket.<anonymous> (internal/child_process.js:441:11)
    at Socket.emit (events.js:321:20)
    at Socket.EventEmitter.emit (domain.js:485:12)
    at Pipe.<anonymous> (net.js:672:12) {
  killed: false,
  code: 1,
  signal: null,
  cmd: 'cd "/tmp/export/lessons/4/content/RES-52298196-ce0f-4d91-8aa5-53f4f8e4ecb9/ui" && rm -r !("M345")'
}

它工作正常。我哪里做错了?

尝试将shell选项传递给
child\u process.exec
like
{“shell”:/bin/bash}
我通过使用
find
命令而不是
rm
解决了这个问题,如下所示:

var ui = "folder_i_want_to_save";
var myPath = "/path/to/base/directory";
var cmd = `find . -type d ! -name . ! -name '${ui}' -exec rm -rv {} +`;
exec(cmd, { cwd: myPath }, (err) => console.log(err));
我还删除了命令的
cd
部分,并将其作为
cwd
参数传递。
不幸的是,这是一个解决方法,并不是语法错误的真正解决方案。

感谢您的回答,但不幸的是,它不起作用
$ cd "/tmp/export/lessons/4/content/RES-52298196-ce0f-4d91-8aa5-53f4f8e4ecb9/ui" && rm -r !("M345")
var ui = "folder_i_want_to_save";
var myPath = "/path/to/base/directory";
var cmd = `find . -type d ! -name . ! -name '${ui}' -exec rm -rv {} +`;
exec(cmd, { cwd: myPath }, (err) => console.log(err));