Masukkan 0
echo foo | xargs -L 1 -I '{}' echo '{}'
Keluaran 0
foo
Masukkan 1
echo foo | xargs -I '{}' -L 1 echo '{}'
Keluaran 1
{} foo
Mengapa mengubah urutan opsi xargs mengubah output?
Versi:xargs (GNU findutils) 4.6.0
Jawaban yang Diterima:
Saat opsi yang diberikan ke xargs bertentangan, urutan mungkin penting.
IEEE Std 1003.1-2008, Edisi 2016/Spesifikasi Basis Grup Terbuka Edisi 7 menambahkan teks berikut ke spesifikasi xargs:
-saya , -L , dan -n pilihan yang saling eksklusif. Beberapa implementasi menggunakan yang terakhir ditentukan jika lebih dari satu diberikan pada baris perintah; implementasi lain memperlakukan kombinasi opsi dengan cara yang berbeda.
Ini mengkodifikasi perilaku banyak implementasi xargs, kembali ke versi asli di PWB/Unix, yang halaman manualnya mengatakan
Saat ada konflik bendera (mis., -l vs. -n ), bendera terakhir didahulukan.
Dalam xargs versi GNU, -L
menonaktifkan -I
. sebelumnya pilihan. Jadi dalam contoh kedua Anda,
echo foo | xargs -I '{}' -L 1 echo '{}'
{}
hanyalah argumen biasa yang diteruskan ke echo
, tanpa penggantian yang dilakukan.
Dibandingkan dengan IEEE Std 1003.1, Edisi 2004/Spesifikasi Basis Grup Terbuka Edisi 6.