具有异步文件的Bash连接器

时间:2018-11-13 18:08:07

标签: bash command-line

我有一个文件database/seed.js,它将文件异步插入到数据库中。

如果我运行node database/seed.js && mongo < ./database/updateCounter.js,是否可以保证mongo < ./database/updateCounter.js将在异步插入完全完成之后运行?

这个答案说A && B意味着B仅在A成功的情况下才能运行,但是如何确定成功呢?

1 个答案:

答案 0 :(得分:0)

成功取决于命令的退出状态。

每个Linux进程终止时都会返回一个名为exit status的整数。在大多数编程语言中,这是您通常在语句return 0中看到的数字。

来自bash manual 3.2.3 List of Commands

  

“与”列表的格式为

command1 && command2
     

仅当command1返回退出状态为零时,才会执行command2。

退出状态等于零通常表示成功,非零退出状态表示失败。与grep的情况类似-退出状态等于0表示在文件/流中找到了模式,grep的退出状态等于1意味着在文件/流中没有找到模式。在bash或shell内置程序中有两个简单的程序-truefalse,第一个返回状态0,另一个返回状态1。这与编程语言中的布尔值相反-通常定义为true具有非零值,通常为1,并且false定义为等于零。

在您的问题中,使用了“异步”一词,表示该操作已发生asynchronously。通常表示操作已开始或被请求开始,但可能已完成或未完成以及产生了什么结果。我不知道database/seed.js的工作方式和工作方式-检查并参考它以了解它在哪些条件下设置的退出状态。

但是,如果您运行node database/seed.js && mongo < ./database/updateCounter.js,则“保证” mongo程序将在且仅当node程序终止且退出状态为零时才执行。我引用了“保证书”,因为没有人能以任何方式向您保证-bash已根据GNU General Public License获得许可,并且您可以在许可中清楚地看到:

  
      
  1. 免责声明。
      在适用法律允许的范围内,本程序不作任何担保。除在编写版权持有人和/或其他各方的书面声明中另有规定外,本程序按“原样”提供,没有任何形式的保证,无论是明示或暗示的,包括但不限于对适销性和适用性的默示保证。 。有关程序质量和性能的全部风险由您承担。如果程序证明是无效的,则您承担所有必要的维修,修理或纠正的费用。
  2.