笔者在slurm批处理脚本中需要用到循环,依次处理每个.dat文件,最开始用的是while循环
#!/bin/bash
#SBATCH -p xxx
#SBATCH -o xxx
#SBATCH -e xxx
#SBATCH -n xxx
ls *.dat >flist
cat flist | while read fname
do
mpirun [MPIOPT] mycommand
echo $fname
done
exit
但是提交任务之后,始终只执行一次即跳出循环,如果注释掉mpirun,则能够进行循环。我百思不得其解。
于是果断改成了for循环
#!/bin/bash
#SBATCH -p xxx
#SBATCH -o xxx
#SBATCH -e xxx
#SBATCH -n xxx
ls *.dat >flist
for fname in $(cat flist)
do
mpirun [MPIOPT] mycommand
echo $fname
done
exit
成功!
当然,while循环为什么不行还需要高人指教。