이전 단계의 최종 결과가 완료될 때까지 기다립니다. 가능합니까?

이전 단계의 최종 결과가 완료될 때까지 기다립니다. 가능합니까?

나는 여러 가지 작업을 순차적으로 수행하는 커밋 스크립트를 가지고 있습니다(적어도 제가 작성한 방식은 그렇습니다). 하지만 스크립트를 실행하면 최종 작업의 동작은 이전 작업이 완료된 순서에 따라 결정됩니다. 첨부 파일은 스크립트의 일부입니다.

#!/bin/bash                                                                                                                                                                                    
#SBATCH --job-name=cff_cg                                                                                                                                                                      
#SBATCH --nodes=1 --ntasks=20                                                                                                                                                                  
#SBATCH --time=0-06:00:00                                                                                                                                                                      
#SBATCH --mem-per-cpu=4gb                                                                                                                                                                      
#SBATCH --constraint=avx512                                                                                                                                                                    
#SBATCH --partition=sixhour                                                                                                                                                                    
#SBATCH --output=1_%a.out                                                                                                                                                                      
#SBATCH --array=1-100
.
.
.
.
.
.
.
.
if [[ -f $main_path/surf_$fold/data.lammps ]] ; then
    echo 'EXISTS'
    check=$(awk 'FNR == 21 {print $2}' $main_path/surf_$fold/data.lammps)
    echo "$check"
    if [[ $check == '1' ]] ; then
        awk 'f{print $3; f=0} /Energy/{f=1}' $main_path/surf_$fold/log.lammps > $main_path/surf_$fold/min_energy.dat
        awk '/Energy/{ if (secondline==0) { secondline=1; next; } else { getline; print $3; } }' $main_path/surf_$fold/log.lammps > $main_path/surf_$fold/min_energy_$fold.dat
    fi
fi


wait

cat $main_path/surf_$fold/min_energy_$fold.dat >> $main_path/energy_final_new.dat

exit 0

최종 출력 파일 "energy_final_new.dat"을 얻는 방법은 배열의 순서에 따릅니다. 즉, 값의 순서는 001,002,003,004이지만 내가 얻는 것은 값의 순서가 혼합된 것입니다(일단 내가 get 002,004,003,001 etc.) 나는 이것이 각각의 순서라고 믿습니다. 작업은 완료된 순서대로 발생하지만 array_id에 따라 순서대로 진행되어야 합니다. 누군가 나를 도와줄 수 있나요? PS - SBATCH는 스크립트를 병렬로 실행합니다.

관련 정보