入力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
承認された回答:
xargsに指定されたオプションが競合する場合、順序が重要になる可能性があります。
IEEE Std 1003.1-2008、2016 Edition / Open Group Base Specification Issue 7は、xargsの仕様に次のテキストを追加しました。
-私 、 -L 、および -n オプションは相互に排他的です。一部の実装では、コマンドラインで複数指定されている場合は最後に指定されたものを使用します。他の実装では、オプションの組み合わせをさまざまな方法で処理します。
これにより、xargsの多くの実装の動作がコード化され、マニュアルページにPWB/Unixの元のバージョンに戻ります
フラグの競合がある場合(例: -l </ strong> 対-n )、最後のフラグが優先されます。
xargsのGNUバージョンでは、-L
以前の-I
を無効にします オプション。したがって、2番目の例では、
echo foo | xargs -I '{}' -L 1 echo '{}'
{}
echo
に渡される単なる通常の引数です 、置換は行われません。
IEEE Std 1003.1、2004 Edition / Open Group Base SpecificationIssue6との比較。