How to process a space delimited environment variable with xargs
Does
echo -e 1 2 3 4 | sed -e 's/\s\+/\n/g' | xargs --max-procs=3 --max-args=1 --replace=% echo % is the number being processed
accomplish the task? The output seems about right:
1 is the number being processed
2 is the number being processed
3 is the number being processed
4 is the number being processed
I also tried replacing echo
with sleep
to confirm it executes in parallel, and it does:
echo -e 1 2 3 4 5 6 7 8 9 9 9 9 9 9 9 9 9 9 9 9 | sed -e 's/\s\+/\n/g' | xargs --max-procs=20 --max-args=1 --replace=% sleep 1
AFAIK the default input delimter of xargs is \r , so you have to change it to <space> and send your input ending accordingly, like so:
$ echo -n "1 2 3 4 " | xargs -d" " --max-procs=3 --max-args=1 --replace=% echo % is the number being processed
1 is the number being processed
2 is the number being processed
3 is the number being processed
4 is the number being processed
$
HTH