2010-01-20 11 views
13

En bourne shell que tienen la siguiente:saltos de línea Quitar en Bourne Shell de variables

VALUES=`some command that returns multiple line values` 

echo $VALUES 

se parece a:

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

me gustaría que se vea como:

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

¿Alguien puede ayudar?

+0

¿Quieres una matriz de 4 cuerdas, o quieres que la única cadena "uno dos tres cuatro"? –

+0

nit: El comando en los palos de atrás (¿por qué no usar $() en su lugar?) No 'devuelve' valores múltiples. Emite múltiples líneas y devuelve un único valor, con suerte cero. –

+0

William, versión muy simplificada. De hecho, tomo la salida de los backticks, hago un análisis de los datos en VALUES que los VALORES de salida más tarde. –

Respuesta

40

echo $VALUES | tr '\n' ' '

+0

funcionó como un encanto, gracias eliah –

+1

Niza. Solo un ajuste: en bash y zsh, al menos, puedes conectar el env var sin eco con <<<, es decir, tr '\ n' '' <<< $ VALUES. – liwp

+1

@liwp +1 por el buen consejo. Por cierto, cómo pasar cadena escapada usando '<<<' es decir 'tr -d '\ n' <<<" una línea con línea de alimentación \ n "'. la cadena no escapa '\ n' en la comilla doble como esperaba, ¿alguna idea? – mko

0

Otra opción es usar xargs (que mantiene un salto de línea definitiva, aunque - en lugar de un posible espacio final utilizando 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'`" 
2

Otro método, si desea no solo imprimir su código sino asignar n a una variable, y no tiene 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 
1

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

echo -n $VALUES

Cuestiones relacionadas