为什么是“&amp ;;”语法无效?

时间:2017-05-31 19:57:33

标签: bash for-loop syntax

我正在尝试在终端上运行for循环,我希望将每次迭代发送到后台进程,以便所有迭代同时运行。

以下是逐个运行的命令

for i in *.sra; do fastq-dump --split-files $i ; done  # ";" only

我突出显示了分号。

同时运行

for i in *.sra; do fastq-dump --split-files $i & done  # "&" only

但这会产生错误

for i in *.sra; do fastq-dump --split-files $i & ; done  # "& ;"

如果有人解释这里发生了什么,那就太好了。我知道这应该用shell脚本方式编写,并有适当的缩进,但有时我只能运行此命令。

1 个答案:

答案 0 :(得分:6)

&;都会终止它们之前的命令。

您不能写& ;,而不能写; ;& &,因为该语言只允许命令终止一次(并且不会... t允许零字列表作为命令。)

因此:for i in *.src; do fastq-dump --split-files "$i" & done完全正确,并且不需要额外的;