【发布时间】:2014-07-10 12:34:29
【问题描述】:
默认情况下,Shell 脚本的执行行为是同步的?
Script1
Script2
我有一个 script1 需要 4 分钟以上才能完成,下一个工作取决于此。(类似于生产者和消费者问题)。
想知道script2是否等到script1完成执行。
【问题讨论】:
-
我不确定你在问什么,你能改写一下吗?脚本运行一系列命令。如果需要,这些命令可以是“后台”,但默认情况下不是。
默认情况下,Shell 脚本的执行行为是同步的?
Script1
Script2
我有一个 script1 需要 4 分钟以上才能完成,下一个工作取决于此。(类似于生产者和消费者问题)。
想知道script2是否等到script1完成执行。
【问题讨论】:
虽然我不完全确定您想知道什么,但这里有一些常见的事情。
您可以运行并行脚本 - 将它们发送到后台,例如:
script1 &
script2 &
script3 &
所有 3 个脚本都将“并行”运行。
现在可能是您想知道的 - 串行执行,当第二个取决于第一个时。
通过pipe机制实现。想象一下:
long_running_script_what_produdes_lines | wc -l
两个程序同时运行,wc 等待来自long_running_script_what_produdes_lines 的输出并计算所有行数。
这里还有其他 IPC(进程间通信)方法(例如命名管道、信号)。
如果您需要了解其他内容,请重新表述问题。
【讨论】:
&& 怎么样?在终端中运行命令时,如果我希望它们串行,我会使用 &&。就像拥有goto='cd to/some/folder' 的别名一样——然后我可以使用goto && cd deeper/folder。不知道.shscrips里是不是也这样?