我编写了以下for
循环(为了更好的可读性,在此处分布为多行):
for F in CLEAN_READS/*_1.fa; do
R=${F%_*}_2.fa; BASE=${F##*/};
SAMPLE=${BASE%_*};
metascript assembly -1 $F -2 $R -o folder_${BASE%_*} &
done
当我运行循环时,所有脚本都会并行启动。如何更改循环以按顺序启动脚本?
答案1
出现此行为的原因是您&
在命令末尾添加了 ,它将命令发送到后台并立即传递到下一个。
当您删除该循环时,循环应该按照您的预期运行&
。请注意,您必须添加一个;
来结束该指令(当将其全部放在一行上时,如最初发布的那样),否则 shell 将产生错误消息。
另外,正如 Stéphane Chazelas 所指出的,你应该养成引用变量扩展的习惯(在适当的情况下,在大多数地方都是这样);可以找到很好的介绍这里。