Как избежать необходимости создания временного файла для запуска двух команд из оболочки bash? - PullRequest
4 голосов
/ 16 ноября 2011

Мне нужно запустить две команды. Первый создает файл, который используется в качестве входного параметра для второго. Я могу бежать так:

$ cmd1 p1 p2 > tmp.txt
$ cmd2 -i tmp.txt p3 

Параметр -i в cmd2 принимает имя файла. Есть ли способ сделать это в одну строку, не создавая файл tmp.txt?

Ответы [ 2 ]

11 голосов
/ 16 ноября 2011

Попробуйте "заменить процесс" (так его называет руководство Bash)

cmd2 -i <(cmd1 p1 p2) p3

Это также работает по-другому:

cmd2 -o >(cmd1 p1 p2) p3
0 голосов
/ 16 ноября 2011
cmd1 p1 p2|xargs cmd2 p3 -i

xargs вызовет cmd2 и превратит свой собственный стандартный ввод (вывод cmd1) в аргументы командной строки для cmd2.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...