web-dev-qa-db-ja.com

異なる引数でコマンドを繰り返し実行する方法は?

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

$ xsel
arg1
arg2
arg3
arg4
...

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

だから私は試しました

$ xsel | mycommand "constantArgument" $1

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

11
Wes

xargsを使用するだけです

xsel | xargs -n1 echo mycommand 

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

定数引数の場合

xsel | xargs -I {} -n1 echo mycommand "constantArgument" {}
12
Rahul Patil
xsel | while read line; do mycommand "$line"; done

または同様のもの。 xargsを使用することもできます。これは、コマンドライン引数を操作するための非常に強力なコマンドです。

7
orion

少しカスタマイズ可能にするために:

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

どちらの方法も簡単で、それを実行します。

1
mikeserv