घटकों को तोड़ना:
# From host1 - Start with 'socat'
user@host1:~# socat -u udp-recv:10552,reuseaddr,crnl -
# From host2 send some data via udp to host1:10552
user@host2:~# echo foo > /dev/udp/host1/10552
# Result on host1
foo
# From host1 - Add 'sed'
user@host1:~# socat -u udp-recv:10552,reuseaddr,crnl - | sed -u s/.*/1+1/
# From host2 send some data via udp to host1:10552
user@host2:~# echo foo > /dev/udp/host1/10552
# Result on host1
1+1
# From host1 - add 'bc'
user@host1:~# socat -u udp-recv:10552,reuseaddr,crnl - | sed -u s/.*/1+1/ | bc
# From host2 send some data via udp to host1:10552
user@host2:~# echo foo > /dev/udp/host1/10552
# Result on host1
2
# From host1 - add 'xargs echo'
user@host1:~# socat -u udp-recv:10552,reuseaddr,crnl - | sed -u s/.*/1+1/ | bc | xargs echo
# From host2 send some data via udp to host1:10552
user@host2:~# echo foo > /dev/udp/host1/10552
# Result on host1
[ nothing ]
क्या कमी है? एक प्लेसहोल्डर। नोट: '-i' प्रतिस्थापन स्ट्रिंग्स को सक्षम करता है, और '{}' प्लेसहोल्डर है।
# From host1 - setup xargs with -i
user@host1:~# socat -u udp-recv:10552,reuseaddr,crnl - | sed -u s/.*/1+1/ | bc | xargs echo -i{} echo {}
# From host2 send some data via udp to host1:10552
user@host2:~# echo foo > /dev/udp/host1/10552
# Result on host1
2
हम्म। लगता है-मैं वंचित हूँ। उपयोग -I
user@host1:~# socat -u udp-recv:10552,reuseaddr,crnl - | sed -u s/.*/1+1/ | bc | xargs echo -I{} echo {}
या '-n1' का उपयोग करके अधिकतम-आर्ग को 1 पर सेट करें।
socat -u udp-recv:10552,reuseaddr,crnl - | sed -u s/.*/1+1/ | bc | xargs -n1
या '-L1' का उपयोग अधिकतम-रेखाएँ सेट करने के लिए 1. जैसा कि टिप्पणियों में किया गया है।
socat -u udp-recv:10552,reuseaddr,crnl - | sed -u s/.*/1+1/ | bc | xargs -L1
अधिक जटिल आदेशों पर:
http://www.tldp.org/LDP/abs/html/moreadv.html
उम्मीद है कि यह मदद करता है।
xargsअधिक इनपुट की प्रतीक्षा कर रहा है। मुझे लगता है किxargs -L 1शायद इससे बचने के लिए पर्याप्त है।