假设我输入以下命令:
/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/