我有一个提交脚本,它按顺序执行几件事(至少我是这样写的)。但是当我运行脚本时,最终操作的行为将根据前一个操作的完成顺序进行。附件是脚本的一部分。
#!/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,但我得到的是混合顺序的值(一旦我得到了002,004,003,001等)我相信这是按照每个作业完成的顺序发生的,但我需要它们按照 array_id 的顺序排列。有人可以帮我弄这个吗? PS - SBATCH 使脚本并行运行。