web-dev-qa-db-ja.com

コマンド出力をいくつかの引数として別のコマンドに渡す方法

次のような出力を生成するコマンドがあります。

$。/ command1
Word1 Word2 Word3

この3つの単語を、次のような別のコマンドの引数として渡します。

$コマンド2ワード1ワード2ワード3

Command1の出力を3つの異なる引数$ 1 $ 2 $ 3をcommand2に渡す方法は?

12
Addy

xargsを使用できます。-tフラグを使用すると、xargsが冗長になり、実行するコマンドが出力されます。

./command1 | xargs -t -n1 command2

-n1は、command2のすべての呼び出しに渡される最大の引数を定義します。これが実行されます:

command2 Word1
command2 Word2
command2 Word3

command2の1回の呼び出しの引数としてすべてが必要な場合は、次のように使用します。

./command1 | xargs -t command2

それは3つの引数でcommand2を呼び出します:

command2 Word1 Word2 Word3
8
chaos

「コマンド置換」、つまり1つのコマンドの出力を外部に埋め込む必要がある

command2 $(command1)

従来、これは次のように行うこともできます。

command2 `command1`

ただし、ネストすることはできないため、通常、この使用はお勧めしません。

例えば:

test.sh:
#!/bin/bash
echo a b c

test2.sh

#!/bin/bash
echo $2

使用する:

./test2.sh $(./test.sh)
b
4
Sirex

これはあなたを助けると思います

コマンド1 | xargsコマンド2

0
PoLIVoX