
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
代替項目なしで一般パラメータのみに渡されます。