![等待上一步操作的最终结果完成。这可能吗?](https://linux22.com/image/199406/%E7%AD%89%E5%BE%85%E4%B8%8A%E4%B8%80%E6%AD%A5%E6%93%8D%E4%BD%9C%E7%9A%84%E6%9C%80%E7%BB%88%E7%BB%93%E6%9E%9C%E5%AE%8C%E6%88%90%E3%80%82%E8%BF%99%E5%8F%AF%E8%83%BD%E5%90%97%EF%BC%9F.png)
我有一个提交脚本,它按顺序执行几件事(至少我是这样写的)。但是当我运行脚本时,最终操作的行为将根据前一个操作的完成顺序进行。附件是脚本的一部分。
#!/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 使脚本并行运行。