pourquoi coller xargs? bash pourrait bien gérer cela :
p=(`echo "param1 param2"`); echo ${p[0]} ${p[1]}
echo "'param 1' 'param 2'" | xargs -n1 | xargs [email protected] echo \[@\] \[@\]
(Dans mon shell, j'ai besoin d'échapper à []
, votre kilométrage peut varier).
Pour ceux qui trouvent cela à partir d'une recherche, la réponse acceptée n'a pas fonctionné pour moi.
echo "'param 1' 'param 2'" | xargs -n1 | xargs [email protected] echo \[@\] \[@\]
produit :
[param 1] [param 1]
[param 2] [param 2]
qui ne répond pas aux exigences données par l'affiche d'origine pour que xargs soit lu dans plusieurs entités, les sépare et les envoie à une seule commande ("echo" dans l'OP) en tant que paramètres séparés. Xargs n'est pas conçu pour ce genre de tâche !
La réponse bash peut fonctionner.
p=(`echo "param1 param2"`); echo [${p[0]}] [${p[1]}]
produit :
[param1] [param2]
mais cette solution ne fonctionne pas avec plus d'une ligne.
Une solution correcte avec bash pour envoyer des paires de lignes comme arguments à une seule commande est :
(echo 'param 1'; echo 'param 2'; echo 'param 3'; echo 'param 4') | while read line1; read line2; do echo "[$line1] [$line2]"; done
produit :
[param 1] [param 2]
[param 3] [param 4]
La réponse GNU Parallel fonctionne, mais GNU Parallel doit être créé et installé. (La version fournie avec Ubuntu n'est pas GNU Parallel.)