Saya mencoba menggunakan xargs untuk menjalankan perintah untuk setiap argumen yang diberikan, tetapi sayangnya flag --replace / -I tampaknya tidak berfungsi dengan baik ketika dikonjugasikan dengan -n. Tampaknya {} akan berkembang menjadi daftar argumen lengkap yang dibaca dari stdin, terlepas dari opsi -n.
Sayangnya semua contoh di web tampaknya untuk perintah (mv, cp, rm) yang akan mengambil banyak argumen di mana {} diperluas.
Misalnya, saat menjalankan:
echo a b c d | xargs -n 1 -I {} echo derp {}
Outputnya adalah:
derp a b c d
Tapi saya berharap:
derp a
derp b
derp c
derp d
Namun, menjalankannya tanpa -I {} menghasilkan hasil yang diharapkan:
echo a b c d | xargs -n 1 echo derp
derp a
derp b
derp c
derp d
Apakah ada cara untuk mencapai ini dengan xargs? Tujuan utama saya adalah menggunakannya untuk menjalankan beberapa sesi (parralel) ssh, misalnya
echo server{1..90} | xargs -n 1 -P 0 -I {} ssh {} 'echo $SOME_HOST_INFO'
Saya menjalankan xargs (GNU findutils) 4.4.2
di RHEL 6.3.
man xargs
pada -I
: Also, unquoted blanks do not terminate input items; instead the separator is the newline character. Implies -x and -L 1.
Jadi berperilaku seperti yang dirancang.
xargs
, tapi tidak GNUxargs
.