xargsを使用したコマンドリストの作成と実行

xargsを使用したコマンドリストの作成と実行

xargsビルドと実行の使い方コマンドリストたとえば、次のようになります。

#1
cmd1 <arg1> && cmd2 <arg1> && cmd3 <arg1>
#2
cmd1 <arg1> ; cmd2 <arg1>

答え1

各入力行に対してサブシェルを起動しますxargs

xargs -I {} sh -c 'cmd1 "$1" && cmd2 "$1" && cmd3 "$1"' sh {}

xargs -I {} sh -c 'cmd1 "$1"; cmd2 "$1"' sh {}

このコマンドは、指定されたsh -c文字列をシェルスクリプトとして実行します。sh -cパラメータはスクリプト自体の背後にあり、$0スクリプト$1内に提供されます。値は$0通常シェルの名前でなければならず、これがshこのパラメータに直接渡される理由です(エラーメッセージで使用されます)。

または、

xargs sh -c '
    for arg do
        cmd1 "$arg" && cmd2 "$arg" && cmd3 "$arg"
    done' sh

xargs sh -c '
    for arg do
        cmd1 "$arg"
        cmd2 "$arg"
    done' sh

これらのバリアントはできるだけ多くのパラメータを取り、sh -cスクリプト内のループ内のそのパラメータにコードを適用します。

いつものように、使用するときは、与えられたユーティリティ(ここ)に与えられた引数を適切に分離するようにxargs注意する必要があります。sh -c

関連情報