mpirun 打破了 bash 中的 while 循环

zbl*_*bli 2 bash shell mpi

我正在尝试运行一个批处理脚本,其中mpirun嵌套在 while 循环中,如下所示

while read line
do
    mpirun -np 4 myexec > /dev/null
done < case.txt
Run Code Online (Sandbox Code Playgroud)

但这个脚本只返回一个循环结果。每当可执行文件完成时,循环就会被打破。我还尝试在没有并行的情况下运行代码,它工作得很好。如果我用普通的 while 循环替换while read 行,例如while [ $count -le 9 ],它也可以工作。For循环也可以。我就是想不通。希望有人能告诉我为什么会发生这种情况。

hek*_*mgl 6

看起来像是mpirun从 读取,在本例中stdin就是这样。case.txt这将在第一次循环运行期间从文件中读取所有行。在下一次尝试时read该文件时,该文件已被完全读取,这就是循环结束的原因。

尝试分配/dev/null给它的标准输入:

while read line
do
    mpirun -np 4 myexec > /dev/null < /dev/null
done < case.txt
Run Code Online (Sandbox Code Playgroud)