У меня есть команда, которая выводит такой результат:
$. / 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