【问题标题】:Returning true/false value to bash from node script从节点脚本返回真/假值到 bash
【发布时间】:2019-08-01 09:52:48
【问题描述】:

是否可以从节点脚本中获取真/假值,该脚本也将某些内容写入标准输出?

// 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 的所有日志记录,但不包含返回值。

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

【问题讨论】:

  • 你不能访问这样的返回值。要么输出它(例如,通过将其写入 STDOUT),要么将其写入文件或使用退出代码。

标签: node.js bash


【解决方案1】:

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

  1. 返回一个状态码,并小心使用它以确保它不会使您的脚本崩溃,例如:
    SUCCESS=$((node script.js && echo 'ok') || echo 'fail')
    
    此行始终成功返回,即使节点返回非零退出代码。运行后,SUCCESS 将设置为 okfail,具体取决于结果 - 您可以将其替换为您喜欢的任何逻辑。
  2. 将输出打印为命令的最后一行,并使用node script.js | tail -n1 仅收集输出的最后一行,而忽略其余的日志记录

如果可以的话,我会推荐 1,但如果你真的需要避免使用状态码,或者你需要更复杂的输出,你可能想要选择选项 2。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-20
    • 2015-07-02
    • 2014-06-07
    • 2015-09-29
    • 2020-01-21
    • 2013-05-06
    • 2013-06-14
    • 2022-10-14
    相关资源
    最近更新 更多