2

假设我输入以下命令:

/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 的返回码。

谢谢。

4

1 回答 1

2

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

解释:

  • &&在一行上划分不同命令的符号表示“如果 && 之前的命令执行成功(返回代码$?为零),则执行 && 之后的命令”
  • 在一行上划分不同命令的;符号表示“运行';'之前的命令,然后是它之后的命令,无论第一个命令是否成功。

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

# wget will fail in both cases:

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

# case 2, with ;
$ wget hello; ls
于 2012-11-01T19:17:57.120 回答