bash
和sh
是否等待命令在执行下一个命令之前终止?
当我期望命令一个接一个地执行时(即不同行上的命令),我运行了一些脚本,但它似乎没有那样工作。我无法随意回忆确切的脚本,但我将命令与&&
符号分开。
如果您从如何进入终端的脚本中剪切和粘贴线条,是否可以保证较早的线条在以下线条之前完成?
答案 0 :(得分:5)
如果您有管道|
或后台作业&
,那么评估可能是非连续的,否则它会一个接一个地评估事物。
但是,如果输出位于不同的流中,则它们可能无序地进入控制台。例如,如果您同时打印到STDOUT和STDERR,则每个流中的行将按顺序排列,但它们可能会以不反映代码中打印顺序的方式进行交错。
答案 1 :(得分:2)
是。只要命令在前台执行即可。即没有“&”命令行末尾的字符。
在你的“&&”里面可能是一个空间
答案 2 :(得分:2)
是的,它按顺序执行......但是如果你在后台使用&然后它可能无法按预期工作。因为这些工作将在后台运行。
答案 3 :(得分:1)
一般情况下,是的。命令将执行,命令完成后其返回值将变为可用,然后将运行下一个命令。
可以通过向作业添加&
来指示shell启动后台作业,例如:
somecommand &
anothercommand
在这种情况下,somecommand
将在后台执行,anothercommand
可能会在somecommand
完成之前启动(也可能会完成)。