在执行下一个命令之前,bash和sh都等待命令终止吗?

时间:2013-01-29 05:16:26

标签: bash shell sh execution

bashsh是否等待命令在执行下一个命令之前终止?

当我期望命令一个接一个地执行时(即不同行上的命令),我运行了一些脚本,但它似乎没有那样工作。我无法随意回忆确切的脚本,但我将命令与&&符号分开。

如果您从如何进入终端的脚本中剪切和粘贴线条,是否可以保证较早的线条在以下线条之前完成?

4 个答案:

答案 0 :(得分:5)

如果您有管道|或后台作业&,那么评估可能是非连续的,否则它会一个接一个地评估事物。

但是,如果输出位于不同的流中,则它们可能无序地进入控制台。例如,如果您同时打印到STDOUT和STDERR,则每个流中的行将按顺序排列,但它们可能会以不反映代码中打印顺序的方式进行交错。

答案 1 :(得分:2)

是。只要命令在前台执行即可。即没有“&”命令行末尾的字符。

在你的“&&”里面可能是一个空间

答案 2 :(得分:2)

是的,它按顺序执行......但是如果你在后台使用&然后它可能无法按预期工作。因为这些工作将在后台运行。

答案 3 :(得分:1)

一般情况下,是的。命令将执行,命令完成后其返回值将变为可用,然后将运行下一个命令。

可以通过向作业添加&来指示shell启动后台作业,例如:

somecommand &
anothercommand

在这种情况下,somecommand将在后台执行,anothercommand可能会在somecommand完成之前启动(也可能会完成)。