다음과 같은 출력을 생성하는 명령이 있습니다.
$. / 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
3 개의 인수로 command2를 호출합니다.
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 명령 2