私は次の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
この動作の理由は、&
コマンドをバックグラウンドに送信し、すぐに次のコマンドに渡すコマンドの最後に追加したためです。
そのループを削除すると、ループは期待どおりに機能するはずです&
。ディレクティブを終了するには、ディレクティブを追加する必要があります;
(もともと公開されているようにすべての行に入力する場合)。それ以外の場合、シェルはエラーメッセージを生成します。
また、Stéphane Chazelasが指摘したように、変数の拡張を引用する習慣が必要です(適切な場合は、ほとんどの場合、良い紹介を見つけることができます)。ここ。