Komponenten zerlegen:
# 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 ]
Was fehlt? Ein Platzhalter Hinweis: '-i' aktiviert Ersatzzeichenfolgen und '{}' ist der Platzhalter.
# 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
Hmm. Scheint, ich bin deprimiert. Verwenden Sie -I.
user@host1:~# socat -u udp-recv:10552,reuseaddr,crnl - | sed -u s/.*/1+1/ | bc | xargs echo -I{} echo {}
ODER benutze '-n1', um max-args auf 1 zu setzen.
socat -u udp-recv:10552,reuseaddr,crnl - | sed -u s/.*/1+1/ | bc | xargs -n1
ODER verwenden Sie '-L1', um die maximalen Zeilen auf 1 zu setzen. Wie in den Kommentaren erwähnt.
socat -u udp-recv:10552,reuseaddr,crnl - | sed -u s/.*/1+1/ | bc | xargs -L1
Mehr zu komplexen Befehlen:
http://www.tldp.org/LDP/abs/html/moreadv.html
Hoffentlich hilft das.