Uno de mis scripts (llamémoslo mi_script
) genera como resultado varias líneas de texto. Ejemplo:
abc def ghi
Lo que quiero ahora es recoger en otro script esa salida y almacenarla en una variable. Algo así:
declare RESULTADO=$(./mi_script)
El problema es que si hago un echo de la variable $RESULTADO
, lo que obtengo es:
abc def ghi
¿Existe alguna manera de guardar también los saltos de línea para que el resultado sea exactamente igual que el original?
Estás leyendo una traducción autorizada de la pregunta Capturing multiple line output to a bash variable planteada por Parker en StackOverflow.
Respuestas
En realidad, la variable RESULTADO
ya guarda bien toda la información. Prueba a ejecutar lo siguiente y verás que es verdad:
$ echo $RESULTADO abc def ghi $ echo "$RESULTADO" abc def ghi
La diferencia es que cuando se encierra con comillas dobles el nombre de una variable, Bash interpreta que se deben mantener todos los espacios en blanco originales, incluyendo los saltos de línea.
Si no utilizas las comillas dobles, Bash reemplaza dos o más espacios en blanco, tabuladores o saltos de línea consecutivos por un solo espacio en blanco. Y eso es lo que estaba ocurriendo en tu caso.
@librosweb