जवाबों:
cat foo.txt | xargs -J % -n 1 sh -c "echo % | bar.sh"
मुश्किल हिस्सा यह है कि xargs अंतर्निहित सबस्क्रिप्शन इनवॉइस करता है। यहाँ sh स्पष्ट रूप से आह्वान किया गया है और पाइप पैरेंट कन्वेयर का हिस्सा नहीं बनता है
cat foo.bar | wc -l
औरcat foo.bar | xargs -J % -n 1 sh -c "echo % | wc -l"
-I
बजाय मतलब है -J
; -J
xargs का कोई विकल्प नहीं है
xargs
है -J
विकल्प है कि के बराबर है -i
linux कीxargs
-J
POSIX में परिभाषित नहीं है, लेकिन -I
GNU की तुलना में इसका एक अलग उपयोग है।)
यदि आप foo.txt की सभी लाइनों को प्रोसेस करना चाहते हैं तो आपको एक लूप का उपयोग करना होगा। &
प्रक्रिया को पृष्ठभूमि में रखने के लिए उपयोग करें
while read line; do
echo $line | bar.sh &
done < foo.txt
यदि आपके इनपुट में रिक्त स्थान हैं, तो आंतरिक क्षेत्र विभाजक को नई रेखा पर अस्थायी रूप से सेट करें
# save the field separator
OLD_IFS=$IFS
# new field separator, the end of line
IFS=$'\n'
for line in $(cat foo.txt) ; do
echo $line | bar.sh &
done
# restore default field separator
IFS=$OLD_IFS
xargs
उपयोग किए गए ओपी के विकल्पों को देखा ।