मैं प्रत्येक दिए गए तर्क के लिए कमांड चलाने के लिए xargs का उपयोग करने की कोशिश कर रहा हूं, लेकिन दुर्भाग्य से --replace / -I ध्वज -n के साथ संयुग्मित होने पर ठीक से काम नहीं करता है। ऐसा लगता है कि {} स्टैनड से पढ़े गए तर्कों की पूरी सूची में विस्तार करेगा, चाहे कोई भी विकल्प हो।
दुर्भाग्य से वेब पर सभी उदाहरण कमांड (mv, cp, rm) के लिए प्रतीत होते हैं जो कि कई तर्क लेगा जहाँ {} का विस्तार होता है।
उदाहरण के लिए, जब चल रहा हो:
echo a b c d | xargs -n 1 -I {} echo derp {}
आउटपुट है:
derp a b c d
लेकिन मुझे उम्मीद थी:
derp a
derp b
derp c
derp d
हालाँकि, इसे बिना चलाए -I {} अपेक्षित परिणाम देता है:
echo a b c d | xargs -n 1 echo derp
derp a
derp b
derp c
derp d
क्या xargs के साथ इसे प्राप्त करने का कोई तरीका है? मेरा अंतिम अभिप्राय बहु (पार्लेल) ssh सत्र चलाने के लिए इसका उपयोग करना है, जैसे
echo server{1..90} | xargs -n 1 -P 0 -I {} ssh {} 'echo $SOME_HOST_INFO'
मैं xargs (GNU findutils) 4.4.2
आरएचईएल 6.3 पर चल रहा हूं ।
man xargs
on -I
: Also, unquoted blanks do not terminate input items; instead the separator is the newline character. Implies -x and -L 1.
तो यह डिजाइन के अनुसार व्यवहार करता है।
xargs
, लेकिन जीएनयू नहींxargs
।