Her sağlanan bağımsız değişken için bir komut çalıştırmak için xargs kullanmaya çalışıyorum, ama ne yazık ki --replace / -I bayrağı -n ile konjuge zaman düzgün çalışmıyor gibi görünüyor. Görünüşe göre {}, -n seçeneğinden bağımsız olarak stdin'den okunan argümanların tam listesine genişleyecek.
Ne yazık ki, web'deki tüm örnekler {} 'nin genişletildiği birden fazla argüman alacak komutlar (mv, cp, rm) için görünmektedir.
Örneğin, çalışırken:
echo a b c d | xargs -n 1 -I {} echo derp {}
Çıktı:
derp a b c d
Ama bekledim:
derp a
derp b
derp c
derp d
Ancak, -I {} olmadan çalıştırılması beklenen sonucu verir:
echo a b c d | xargs -n 1 echo derp
derp a
derp b
derp c
derp d
Bunu xargs ile başarmanın bir yolu var mı? Nihai niyetim, birden fazla (parralel) ssh oturumu çalıştırmak için kullanmak, örneğin
echo server{1..90} | xargs -n 1 -P 0 -I {} ssh {} 'echo $SOME_HOST_INFO'
xargs (GNU findutils) 4.4.2
RHEL 6.3 üzerinde çalışıyorum .
man xargs
on -I
: Also, unquoted blanks do not terminate input items; instead the separator is the newline character. Implies -x and -L 1.
Yani tasarlandığı gibi davranır.
xargs
, ancak GNU ile çalışmazxargs
.