0を入力してください

0を入力してください

0を入力してください

echo foo | xargs -L 1 -I '{}' echo '{}'

出力0

foo

1を入力してください

echo foo | xargs -I '{}' -L 1 echo '{}'

出力1

{} foo

xargsオプションの順序を変更すると出力が変わるのはなぜですか?

バージョン:xargs (GNU findutils) 4.6.0

ベストアンサー1

xargsで提供されているオプションが競合している場合は、順序が重要になる可能性があります。

IEEE Std 1003.1-2008, 2016 Edition/Open Group 基本仕様 7号xargs仕様に次のテキスト1を追加します。

これ-私-エル-Nオプションは相互に排他的です。コマンドラインに複数のものがある場合、一部の実装は指定された最後のオプションを使用し、他の実装ではオプションの組み合わせを異なる方法で処理します。

これは、PWB / Unixの元のバージョンにさかのぼるxargsの多くの実装動作をエンコードします。マニュアルページ説明する

フラグの競合がある場合(例:-エルそして-N)、最後のフラグが優先されます。

xargsのGNUバージョンでは、以前の-Lオプション-Iは無効になります。 2番目の例では

echo foo | xargs -I '{}' -L 1 echo '{}'

{}echo代替項目なしで一般パラメータのみに渡されます。

[1]比較IEEE Std 1003.1, 2004 Edition/Open Group 基本仕様 6号

おすすめ記事