異なる引数でコマンドを繰り返し実行するにはどうすればよいですか?


11

私はUbuntuにいます。(改行で区切られた)いくつかの引数をコピーし、xselを使用して次のように出力できます

$ xsel
arg1
arg2
arg3
arg4
...

ここで、これらの各引数を別のコマンドに使用して、引数の数だけそのコマンドを実行したいと思います。

だから私は試した

$ xsel | mycommand "constantArgument" $1

ただし、これmycommandは最初の引数に対してのみ実行されました。すべての引数に対してどのように実行できますか?


mycommandには複数の引数があるという事実を反映するように質問を編集しました。
ウェス

回答:


12

あなたは簡単に使うことができます xargs

xsel | xargs -n1 echo mycommand 

-n1 mycommandの1つの引数を意味しますが、それは単なるドライランであり、何を実行するかを示し、それを実行します。 echo

定数引数の場合

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

「mycommand」が、xselに1つの引数しか含まれていない複数の引数を期待している場合はどうなりますか?
ウェス

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

xsel | xargs -n2 echo mycommandコマンドごとに2つの引数
Rahul Patil 14年

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.