Pregunta

En shell bourne tengo los siguientes:

VALUES=`some command that returns multiple line values`

echo $VALUES

se ve así:

"ONE"
"TWO"
"THREE"
"FOUR"

Me gustaría que se vea como:

"ONE" "TWO" "THREE" "FOUR"

¿Alguien puede ayudar?

¿Fue útil?

Solución

echo $VALUES | tr '\n' ' '

Otros consejos

Otro método, si quiere no sólo imprimir su código, pero asignarlo a una variable, y no tener un espacio espurio al final:

$ var=$(tail -1 /etc/passwd; tail -1 /etc/passwd)
$ echo "$var"
apache:x:48:48:Apache:/var/www:/sbin/nologin
apache:x:48:48:Apache:/var/www:/sbin/nologin
$ var=$(echo $var)
$ echo "$var"     
apache:x:48:48:Apache:/var/www:/sbin/nologin apache:x:48:48:Apache:/var/www:/sbin/nologin

La solución aceptada no funcionó para mí (en OS X Yosemite). Esto es lo que he utilizado:

echo -n $VALUES

Otra opción es usar xargs (que mantiene un salto de línea final de embargo - en lugar de un posible uso de espacio final tr):

echo $VALUES | xargs
printf '%s\n' 1 2 3 4 5 | xargs

@yozloy: cómo pasar cadena escapada utilizando <<<

tr -d '\n' <<< "`printf '%b' 'a line with line feed \n'`"
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top