나는 다음 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가 지적했듯이 변수 확장을 인용하는 습관을 들여야 합니다(적절한 경우 대부분의 경우 좋은 소개를 찾을 수 있습니다).여기.