假设我键入以下命令:
/usr/local/bin/wget -O "/storehere.xml" "download1" && ./parse_xml;/usr/local/bin/wget -O "/storehere.xml" "download2" && ./parse_xml;
据我所知,在检索并存储download1之后,shell将执行parse_xml。然而,我不清楚的是,下载2的下一个wget命令何时执行?parse_xml执行完毕(当然是第一次)?或者在请求执行parse_xml之后?如果答案是后一个,我想知道一种方法,让我的脚本在执行下一个wget之前等待parse_xml的返回代码。
谢谢。
在您的情况下,在调用下一个命令之前,每个命令都会被调用并成功完成(或失败)。
解释:
- 在一行上划分不同命令的
&&
表示法意味着"如果成功执行之前的命令(返回代码,$?
为零),则在&&之后执行命令。"> - 在一行上划分不同命令的
;
表示法意味着"在‘;’之前运行命令,然后在它之后运行命令,无论第一个命令是否成功
要测试这一点,您可以在提示符上尝试以下两个不同的命令:
# wget will fail in both cases:
# case 1, with &&
$ wget hello && ls
# case 2, with ;
$ wget hello; ls