Файл трубопровода для команды, которая не реализует трубопроводы

$ cat foo foo bar 

Теперь, если я это сделаю:

 $ some_program foo 

Работает.

Но если я попробую:

 $ cat foo | some_program 

Это не работает.

Я ищу чистый способ ввода ввода в some_program без использования беспорядочных временных файлов.

Трубопровод поставит stdout cat foo на stdin some_program . В этом случае some_program ожидает аргумент, а не stdin, поэтому вам нужно сохранить результат cat foo в переменную, а затем вызвать some_program $variable .

Я не слишком уверен в сценариях bash, но попробуйте это?

 bar=`cat foo` some_program $bar 

На самом деле, может быть, это сработает …

 some_program `cat foo` 

В bash вы можете использовать замену процесса

 $ some_program <(cat foo) 

Вы можете добавить столько параметров, сколько вам нравится, пока вы знаете, что эти параметры будут именами файлов, которые будут считаны только для чтения. Вы не можете читать и писать одновременно.

Кроме того, как предложил @Bob, существует еще один, более гибкий метод: xargs :

Вы можете использовать

 cat foo | xargs some_program 

Что в основном эквивалентно

 some_program `cat foo` 

Если программа ожидает только один аргумент за раз, вы можете сделать

 cat foo | xargs -n 1 some_program 

И some_program будет вызываться один раз для каждой строки ввода.

Существует множество других вариантов xargs , таких как тщательная обработка «плохих» имен файлов (с пробелами и другими специальными символами), ограничение количества одновременно работающих процессов и т. Д., Которые можно найти в man-странице.

  • Как сделать Ctrl-Z и bg одним нажатием клавиши, чтобы процесс продолжался в фоновом режиме?
  • Написание сценариев оболочки, которые будут выполняться на любой оболочке (используя несколько строк shebang?)
  • Zsh не попадает ~ / .profile
  • Команды npm не работают на WSL с zsh
  • Почему `zsh` вставляет` ~ `, когда я нажимаю клавишу удаления?
  • Разделите стрелку на локальную и глобальную историю ZSH
  • Откройте новую вкладку в том же каталоге
  • Команда команды Git ведет себя как «меньше»,
  • Создайте много tar-файлов из каталога с 500000 файлами
  • Как мне получить завершение aws cli для работы с zsh на ubuntu?
  • Исключения из функции zsh correctall?
  • Давайте будем гением компьютера.