Lo que ha escrito en la primera línea parece un comando completo (una "lista (compuesta)" en la terminología del shell), por lo que el shell lo trata como un comando completo. Como hay un marcador de inicio de documento aquí ( <<END), el shell lee el contenido del documento aquí y luego inicia un nuevo comando. Si desea colocar el documento aquí en el medio de una lista, debe indicar al shell que la lista no está terminada. Aquí hay un par de formas.
mpirun -np 6 ./laplace <<END |
…
END
tail -n 1 > output
{ mpirun -np 6 ./laplace <<END
…
END
} | tail -n 1 > output
O, por supuesto, puede asegurarse de que el comando encaje completamente en la primera línea.
mpirun -np 6 ./laplace <<END | tail -n 1 > output
…
END
La regla para recordar es que el contenido del documento aquí comienza después de la primera línea nueva sin comillas después del <<ENDindicador. Por ejemplo, aquí hay otra forma ofuscada de escribir este script:
mpirun -np 6 ./laplace <<END \
| tail -n $(
…
END
echo 1) > output