[unix] 다른 인수로 명령을 반복적으로 실행하는 방법은 무엇입니까?

우분투에 있습니다. 몇 가지 인수 (줄 바꿈으로 구분)를 복사 했으며 xsel 을 사용 하여 다음과 같이 인쇄 할 수 있습니다

$ xsel
arg1
arg2
arg3
arg4
...

이제 다른 인수에 이러한 인수를 각각 사용하고 인수가있는 횟수만큼 해당 명령을 실행하려고합니다.

그래서 나는 시도했다

$ xsel | mycommand "constantArgument" $1

그러나 이것은 mycommand첫 번째 인수에 대해서만 실행 되었습니다. 모든 인수에 대해 어떻게 실행할 수 있습니까?



답변

당신은 단순히 사용할 수 있습니다 xargs

xsel | xargs -n1 echo mycommand 

-n1 mycommand에 대한 하나의 arg를 의미하지만, 단지 드라이 런입니다. echo

상수 인수

xsel | xargs -I {} -n1 echo mycommand "constantArgument" {}


답변

xsel | while read line; do mycommand "$line"; done

또는 비슷한 것. xargs명령 줄 인수 조작을위한 매우 강력한 명령 인을 사용할 수도 있습니다 .


답변

약간의 커스터마이즈 가능성 :

printf "${CMD} %s ${ARG2}\n" `xsel` | sh -n

-noexecute작동 방식을 본 후에 플래그 를 제거 할 수 있습니다 .

그것이 당신을 위해 효과가 있다면, 당신은 sh완전히 떨어 뜨리고 대신 이것을 할 수 있습니다 :

. <<HERE /dev/stdin
    $(printf "${CMD} %s ${ARG2}\n" `xsel`)
HERE

또는 더 빠름 :

printf "${CMD} %s ${ARG2}\n" `xsel` | . /dev/stdin

어느 쪽이든 쉽게 할 수 있습니다.


답변