perché attaccare xargs? bash potrebbe gestirlo bene:
p=(`echo "param1 param2"`); echo ${p[0]} ${p[1]}
echo "'param 1' 'param 2'" | xargs -n1 | xargs [email protected] echo \[@\] \[@\]
(Nella mia shell devo sfuggire a []
, il tuo chilometraggio può variare).
Per coloro che lo trovano da una ricerca, la risposta accettata non ha funzionato per me.
echo "'param 1' 'param 2'" | xargs -n1 | xargs [email protected] echo \[@\] \[@\]
produce:
[param 1] [param 1]
[param 2] [param 2]
che non soddisfa i requisiti forniti dal poster originale per leggere xargs in più entità, separarle e inviarle a un singolo comando ("echo" nell'OP) come parametri separati. Xargs non è progettato per questo tipo di attività!
La risposta bash può funzionare.
p=(`echo "param1 param2"`); echo [${p[0]}] [${p[1]}]
produce:
[param1] [param2]
ma questa soluzione non funziona con più di una riga.
Una soluzione corretta con bash per inviare coppie di righe come argomenti a un singolo comando è:
(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 risposta GNU Parallel funziona, ma GNU Parallel deve essere creato e installato. (La versione fornita con Ubuntu non è GNU Parallel.)