如何将 For 循环转换为顺序执行

如何将 For 循环转换为顺序执行

我编写了以下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 所指出的,你应该养成引用变量扩展的习惯(在适当的情况下,在大多数地方都是这样);可以找到很好的介绍这里

相关内容