如何区分命令是否不正确或者nodejs child_process.execSync的结果为空

时间:2017-12-04 12:57:27

标签: javascript node.js

try {
    var output = child_process.execSync(cmd);
} catch (ex) {
    return 0
}
return output.toString()

所以我想区分cmd =" lx -a"的情况,这是一个不正确的命令和cmd =" ls / home / dir"和/的情况home / dir是一个空目录,因此它不会生成任何内容或空字符串。 当我尝试它时,似乎两个案例都会被nodejs捕获为异常。

如何区分?我以为我可以编写像

这样的代码
if (ex.message.indexOf("not found") >= 0)

但它只会覆盖一个命令本身不正确的情况,如果参数错误怎么办?或者错误消息未包含"未找到"?

的其他情况

2 个答案:

答案 0 :(得分:1)

从方法的文档:

  

如果进程超时,或者具有非零退出代码,则此方法   会扔。 Error对象将包含整个结果   child_process.execSync()

因此,如果不存在命令 - 它将抛出一个错误。 否则它将在output中返回一个空字符串。 在output之前将undefined设置为try,以便您可以检查错误。

答案 1 :(得分:0)

尝试对您的肯定案例使用switch case,并对其他任何cmd值使用默认值,默认情况下,您可以返回自定义值。