¿Por qué pegar xargs? bash podría manejar esto bien:
p=(`echo "param1 param2"`); echo ${p[0]} ${p[1]}
echo "'param 1' 'param 2'" | xargs -n1 | xargs [email protected] echo \[@\] \[@\]
(En mi caparazón necesito escapar []
, su millaje puede variar).
Para aquellos que encuentran esto en una búsqueda, la respuesta aceptada no me funcionó.
echo "'param 1' 'param 2'" | xargs -n1 | xargs [email protected] echo \[@\] \[@\]
produce:
[param 1] [param 1]
[param 2] [param 2]
que no cumple con los requisitos dados por el cartel original para leer xargs en múltiples entidades, separarlos y enviarlos a un solo comando ("eco" en el OP) como parámetros separados. ¡Xargs no está diseñado para este tipo de tareas!
La respuesta bash puede funcionar.
p=(`echo "param1 param2"`); echo [${p[0]}] [${p[1]}]
produce:
[param1] [param2]
pero esta solución no funciona con más de una línea.
Una solución correcta con bash para enviar pares de líneas como argumentos a un solo comando es:
(echo 'param 1'; echo 'param 2'; echo 'param 3'; echo 'param 4') | while read line1; read line2; do echo "[$line1] [$line2]"; done
produce:
[param 1] [param 2]
[param 3] [param 4]
La respuesta de GNU Parallel funciona, pero se debe crear e instalar GNU Parallel. (La versión empaquetada con Ubuntu no es GNU Parallel).