Назад | Перейти на главную страницу

Как передать вывод команды в виде нескольких аргументов другой команде

У меня есть команда, которая выводит такой результат:

$. / command1
слово1 слово2 слово3

Я хочу передать эти три слова в качестве аргументов другой команде, например:

$ command2 word1 word2 word3

Как передать вывод command1 в виде трех разных аргументов $ 1 $ 2 $ 3 в command2?

Ты можешь использовать xargs, с -t флаг xargs будет подробным и печатает команды, которые он выполняет:

./command1 | xargs -t -n1 command2

-n1 определяет максимальное количество аргументов, передаваемых при каждом вызове command2. Это выполнит:

command2 word1
command2 word2
command2 word3

Если вы хотите все как аргумент одного вызова command2 используйте это:

./command1 | xargs -t command2

Это вызывает команду 2 с 3 аргументами:

command2 word1 word2 word3

Вы хотите 'подстановку команд', то есть: вставлять вывод одной команды в другую

command2 $(command1)

Традиционно это также можно сделать так:

command2 `command1`

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

Например:

test.sh:
#!/bin/bash
echo a b c

test2.sh

#!/bin/bash
echo $2

ИСПОЛЬЗОВАНИЕ:

./test2.sh $(./test.sh)
b

Я думаю, это поможет тебе

command1 | xargs command2