mpirun在bash中打破了while循环

时间:2017-05-02 15:19:18

标签: bash shell mpi

我正在尝试运行一个批处理脚本,其中 mpirun 嵌套在while循环中,就像这样

while read line
do
    mpirun -np 4 myexec > /dev/null
done < case.txt

但是这个脚本只返回一个循环结果。每当可执行文件完成时,循环就会中断。 我也试图没有并行运行代码,它工作正常。 如果我用正常的while循环替换 while read line ,比如 while [$ count -le 9] ,它也可以。 For循环也是好的。 我只是想不出来。希望有人能告诉我为什么会这样。

1 个答案:

答案 0 :(得分:3)

看起来mpirunstdin读取,在这种情况下为case.txt。这将在循环的第一次运行期间读取文件中的所有行。在read的下一次尝试中,文件已经被完全读取,这就是循环结束的原因。

尝试将/dev/null分配给其stdin:

while read line
do
    mpirun -np 4 myexec > /dev/null < /dev/null
done < case.txt