2012-11-01 50 views
2

比方说,我在下面的命令输入:bash的顺序执行时间表

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

据我了解,下载1被检索和存储后壳将执行parse_xml。但是,我不清楚什么时候执行下一个wget命令的下载2? 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 
+0

谢谢!我以为:) – captainspi

+2

+1。顺便说一下,为了获得相反的效果 - 在前一个命令仍在执行时允许一个命令开始 - 您可以使用'&'而不是';'。 – ruakh