bash顺序执行时间线

标签 bash sh

假设我输入以下命令:

/usr/local/bin/wget -O "/storehere.xml" "download1" && ./parse_xml;/usr/local/bin/wget -O "/storehere.xml" "download2" && ./parse_xml;

据我了解,shell 将在检索并存储 download1 后执行 parse_xml。但是,我不清楚的是,下一个下载 2 的 wget 命令何时执行? parse_xml 执行完成后(当然是第一次)?或者在发出执行 parse_xml 的请求之后?如果答案是后一个,我想知道一种方法让我的脚本在执行下一个 wget 之前等待来自 parse_xml 的返回代码。

谢谢。

最佳答案

在您的情况下,在调用下一个命令之前,每个命令都会被调用并成功完成(或失败)。

说明:

  • 在一行上划分不同命令的 && 表示法表示“如果 && 之前的命令成功执行(返回代码,$? 为零),则执行&&"之后的命令
  • 在一行上划分不同命令的 ; 表示法意味着“运行‘;’之前的命令,然后运行它后面的命令,无论第一个命令是否成功。<

要对此进行测试,您可以在提示符下尝试这 2 个不同的命令:

# wget will fail in both cases:

# case 1, with &&
$ wget hello && ls

# case 2, with ;
$ wget hello; ls

关于bash顺序执行时间线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13183830/

相关文章:

regex - 如何匹配单行字符串上最后一次出现的模式

linux - 为什么 super 简单的功能在我的 Mac 终端中无法显示 256 色?

linux - 如何在 OS X 上设置 SSH 服务器

linux - 在另一个目录中运行 cat 命令

bash - 将 linux "cut"与标准输入一起使用

bash - 多次运行的平均运行时间

bash - shebang 标志与设置内置标志之间的区别

linux - 从脚本中的变量执行命令(函数)

linux - 如何提取字符串开头的一部分?

linux - 使用exec命令时无法退出Shell脚本