从节点脚本向bash返回true / false值

时间:2019-08-01 09:52:48

标签: node.js bash

是否有可能从节点脚本中获取true / false值,该脚本还将某些内容写入std输出中?

// node script
console.log('doing something');
if (doSomething()) {
  return true; // I would like to get this in bash
}

return false; // Or this

然后在我的bash中我这样阅读

SUCCESS=$(node script.js)

但是问题是SUCCESS包含来自console.log的所有日志记录,但不包含返回值。

在我的环境中,我不能为此使用退出代码,否则整个脚本将失败。

1 个答案:

答案 0 :(得分:2)

我可以看到两个主要选项:

  1. 返回状态码,并仔细使用它以确保它不会使脚本崩溃,例如:
    SUCCESS=$((node script.js && echo 'ok') || echo 'fail')
    
    即使节点返回了非零的退出代码,该行也总是成功返回。运行之后,根据结果,SUCCESS将被设置为okfail-您可以将其替换为所需的逻辑。
  2. 将输出打印为命令的最后一行,并使用node script.js | tail -n1仅收集输出的最后一行,而忽略其余的日志记录

如果可以的话,我建议您使用1,但是如果您确实需要避免使用状态码,或者需要更复杂的输出,则可以选择选项2。