2012-09-17 28 views
15

En Bash (u otras conchas) ¿cómo puedo imprimir una variable de entorno que tiene un valor de varias líneas?¿Imprimir una variable con valor de varias líneas en shell?

text='line1 
line2' 

sé un simple habitual echo $text no va a funcionar fuera de la caja. ¿Algún ajuste de $ IFS ayuda?

Mi solución actual es algo así como ruby -e 'print ENV["text"]'. ¿Se puede hacer esto en shell puro? Me preguntaba si el comando env tomaría un nombre var sin resolver, pero parece que no.

+0

¿Por qué doblar hacia atrás con los palos de retroceso? Simplemente haga 'text = 'línea1 línea2'' (por lo que la asignación abarca dos líneas literales de texto), o' text = $' line1 \ nline2'' si está contento con la portabilidad restringida. –

+1

con bash, la manera de obtener ese texto en una variable es 'text = $ 'line1 \ nline2'' –

+0

@WilliamPursell Sabía que era más simple que eso intenté aquí primero, pero eso no funcionó ... pero, por supuesto, La cadena simple multilínea es simple. Es muy tarde para refrescar mis recuerdos de bash. Gracias. – inger

Respuesta

28

La misma solución que siempre.

echo "$text" 
+1

lo siento, ¿cómo es esto diferente de echo $ text? – inger

+3

Hay comillas dobles, lo que inhibe la división de palabras en bash. –

+0

¡Eso es todo gracias! lo siento, no me di cuenta de que el problema era que la palabra escupía aquí ... – inger

2
export TEST="A\nB\nC" 
echo $TEST 

da salida:

A\nB\nC 

pero:

echo -e $TEST 
A 
B 
C 

Por lo tanto, la respuesta parece ser el parámetro '-e' a eco, asumiendo que entiendo tu pregunta correctamente

+2

Gracias, eso está muy bien ... sin embargo, en mi caso, la var contiene un carácter LF genuino en lugar de la secuencia de escape. Aclarando la pregunta ahora. – inger

Cuestiones relacionadas