Используйте ЗДЕСЬ файл и перенаправьте вывод команды

"данные дампа". JCL не важен.

11
16.05.2011, 19:33
2 ответа

То, что Вы записали в первой строке, похоже на полную команду (“(составной) список” в терминологии оболочки), таким образом, оболочка рассматривает его как полную команду. С тех пор существует здесь-документ, запускают маркер (<<END), оболочка затем читает содержание здесь-документа и затем запускает новую команду. Если Вы хотите поместить здесь-документ посреди списка, необходимо указать к оболочке, что список не закончен. Вот несколько путей.

mpirun -np 6 ./laplace <<END |
…
END
tail -n 1 > output
{ mpirun -np 6 ./laplace <<END
…
END
} | tail -n 1 > output

Или, конечно, можно удостовериться, что команда полностью помещается в первую строку.

mpirun -np 6 ./laplace <<END | tail -n 1 > output
…
END

Правило помнить состоит в том, что содержание здесь-документа запускается после первой неупомянутой новой строки после <<END индикатор. Например, вот другой запутываемый способ записать этот сценарий:

mpirun -np 6 ./laplace <<END \
| tail -n $(
…
END
             echo 1) > output
12
27.01.2020, 19:57
  • 1
    Тот последний! "запутываемый".. Вы не шутите! :).. Я споткнулся через идею твердой новой строки, но на самом деле разделить пополам блок на кронштейнах как этот находится на грани bizzare.. Это дизайном, или действительно ли это - совпадающий abberation?. (например, есть ли реальное использование для этого?... и можно на самом деле даже поместить несколько, точка с запятой разделила команды в той первой "мягкой" строке.. –  Peter.O 26.05.2011, 18:10
  • 2
    @fred: Просто совпадающая аберрация. Должно быть некоторое правило как, туда, где heredoc запускается и останавливается. Здесь правило состоит в том, что heredoc похож на единственный маркер, присоединенный к следующему маркеру новой строки после <<END бит. Новая строка обратной косой черты аннулирует новую строку. –  Gilles 'SO- stop being evil' 26.05.2011, 23:06
mpirun -np 6 ./laplace <<END | tail -n 1 > output
100
100
100
0.01
100
3
2
1
END
7
27.01.2020, 19:57

Теги

Похожие вопросы