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


11

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

$ xsel
arg1
arg2
arg3
arg4
...

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

그래서 나는 시도했다

$ xsel | mycommand "constantArgument" $1

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


mycommand에 두 개 이상의 인수가 있다는 사실을 반영하여 질문을 편집했습니다.
Wes

답변:


12

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

xsel | xargs -n1 echo mycommand 

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

상수 인수

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

"mycommand"가 xsel에 하나의 인수 만 포함 된 둘 이상의 인수를 예상하면 어떻게됩니까?
Wes

xsel | xargs -n1 echo mycommand -more-arg
Rahul Patil

xsel | xargs -n2 echo mycommand명령 당 두 개의 arg
Rahul Patil

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

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


1

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

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

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.