O que você escreveu na primeira linha se parece com um comando completo (uma “lista (composta)” na terminologia do shell); portanto, o shell o trata como um comando completo. Como existe um marcador de início do documento aqui ( <<END), o shell lê o conteúdo do documento aqui e inicia um novo comando. Se você deseja colocar o documento aqui no meio de uma lista, é necessário indicar ao shell que a lista não está concluída. Aqui estão algumas maneiras.
mpirun -np 6 ./laplace <<END |
…
END
tail -n 1 > output
{ mpirun -np 6 ./laplace <<END
…
END
} | tail -n 1 > output
Ou, é claro, você pode garantir que o comando se encaixe completamente na primeira linha.
mpirun -np 6 ./laplace <<END | tail -n 1 > output
…
END
A regra a lembrar é que o conteúdo do documento aqui é iniciado após a primeira nova linha não citada após o <<ENDindicador. Por exemplo, aqui está outra maneira ofuscada de escrever este script:
mpirun -np 6 ./laplace <<END \
| tail -n $(
…
END
echo 1) > output