Как передать подпроцесс команде с помощью bash

Предоставленные ответы содержат полезную информацию и дают представление о процессе, который я считаю очень важным (особенно для авто -дидактических типов, которые описывают многих из нас здесь, в SE ).

Тем не менее, есть бесплатный проект, который более или менее достигает чего-то подобного для тех, кто приходит сюда и просто хочет сделать что-то подобное, если не то же самое.

https://www.pendrivelinux.com/yumi-multiboot-usb-creator/

Имя глупое. Графика сырная. Инструменты работают, и работают очень хорошо. По крайней мере, исходный код, который они предоставляют, может вам помочь.

0
23.02.2020, 03:53
1 ответ

Ваш вопрос не совсем ясен. Но я предполагаю, что у вас есть команда с именем x, которая делает что-то вроде:

cat "$1"
one=$(cat "$1")

Теперь, когда вы выполняете x <(echo "foo"), вы получаете сообщение об ошибке.

Теперь это из-за того, как работает структура <(...).

По сути, он запускается echo fooи соединяет его вывод с дескриптором временного файла (/dev/fd/63), а затем передает его в качестве параметра.

Теперь ваша первая команда catсчитывает весь ввод. Это означает, что входных данных не осталось. Таким образом, вашей второй командеcatнечего читать. И вы получаете сообщение об ошибке, потому что процесс echoзавершился и нет открытого дескриптора для чтения.

В простой форме вы сделали специальную версию

echo "foo" | {
  cat
  one=$(cat)
}

но с умной магией обработки файлов.

0
28.04.2021, 23:22

Теги

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