Используйте файл HERE и перенаправляйте вывод команды

У меня есть следующий код в пакетном скрипте:

mpirun -np 6 ./laplace <<END 100 100 100 0.01 100 3 2 1 END | tail -n 1 > output 

Но он не работает. То, что я хочу сделать, это использовать файл HERE в качестве входа в команду mpirun, а затем передать вывод команде хвоста. Тем не менее, я думаю, что файлы ЗДЕСЬ и выходные данные путают.

Как мне написать это, чтобы он делал то, что я хочу?

2 Solutions collect form web for “Используйте файл HERE и перенаправляйте вывод команды”

То, что вы написали в первой строке, выглядит как полная команда («составной» список «в терминологии оболочки»), поэтому оболочка рассматривает ее как полную команду. Поскольку маркер начала здесь-документа ( <<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 
 mpirun -np 6 ./laplace <<END | tail -n 1 > output 100 100 100 0.01 100 3 2 1 END 
  • Команда grep не работает в условном выражении
  • Декодирование «prog> file 2> & 1"
  • Почему bzip2 -версия ведет себя странно?
  • cat / dev / null опустошил мой файл журнала, но размер не изменился
  • Как я могу отправлять чтения и записи в одном дескрипторе файла в разные места?
  • Труба не поднимает stdout
  • Почему можно ссылаться на закрытый stderr под bash?
  • Как отправить ввод в программу на C с помощью сценария оболочки
  • Как создать текстовый отчет в Linux?
  • Перенаправление и вывод труб
  • Сохранить вывод -exec в текстовый файл
  • Interesting Posts

    Что означает «выполнение» разрешения в папке?

    Не удается выполнить ssh на удаленную машину, используя сценарий оболочки в Crontab

    Стандарты и протоколы, которые были впервые реализованы в Linux / Open source

    Как вернуть ближайший DNS-IP на основе запроса IP-адреса клиента?

    Как отключить локальный syslog, и это хорошая идея?

    Автозаполнение и раскраска не работают, при использовании ssh в оболочке emacs

    Какие шаги выполняет «insserv» для установки сценария init (System-V)?

    Что такое команда, которая отобразит только синтаксис и параметры команды?

    Обработка управляющих символов

    Почему разделы дисков?

    Создайте пользовательскую запись debian grub для запуска systemd multiuser.target

    Как я могу дважды загружать CentOS и Windows 10?

    Почему этот исходный оператор не работает?

    Как удалить существующие элементы из массива и впоследствии добавлять новые элементы

    * nix, менеджер пакетов которого НЕ разделяет Python на несколько пакетов

    Linux и Unix - лучшая ОС в мире.