Mencari cara untuk memanggil lebih dari satu perintah dalam xargs one-liner, saya menemukan rekomendasi di findutils untuk memanggil shell dari xargs seperti ini:
$ find ... | xargs sh -c 'command $@'
Lucunya, jika saya menggunakan xargs seperti itu, untuk beberapa alasan ia melewatkan argumen pertama:
$ seq 10 | xargs bash -c 'echo $@'
2 3 4 5 6 7 8 9 10
$ seq 10 | xargs -n2 bash -c 'echo $@'
2
4
6
8
10
Apakah ada yang salah dengan versi shell atau xargs saya? Apakah dokumentasi itu tidak akurat?
Menggunakan xargs (GNU findutils) 4.4.2 dan GNU bash, versi 4.3.11 (1) -release .
move
di akhir contoh! Saya harus membaca dengan lebih cermat ... Terima kasih! =)Tidak. Bash memberikan argumen pertama menjadi $ 0:
$@
ekspansi ke$1
$2
$3
.... Akibatnya, nilai$0
tidak termasuk dalam$@
.sumber