GNU/Linux >> Tutoriales Linux >  >> Linux

¿Pueden xargs separar parámetros?

¿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).


Linux
  1. ¿Puede Bash escribir en su propio flujo de entrada?

  2. Xargs:¿Importa el orden de las opciones?

  3. ¿Cómo puedo mover archivos con xargs en Linux?

  4. xargs --replace/-I para argumentos individuales

  5. ¿Cómo puedo enviar un comando a un archivo sin obtener un archivo en blanco por error?

¿Pasar múltiples parámetros a través de Xargs?

Parámetros especiales de Bash explicados con 4 scripts de Shell de ejemplo

Parámetros posicionales de Bash explicados con 2 scripts de shell de ejemplo

¿Se puede usar el comando linux cat para escribir texto en un archivo?

¿Cómo puedo obtener el último número de una cadena en bash?

¿Cómo puedo eliminar archivos duplicados en árboles de directorios separados?