명령 출력을 여러 인수로 다른 명령에 전달하는 방법 워드 3 이 세 단어를 다음과

다음과 같은 출력을 생성하는 명령이 있습니다.

$. / 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