GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo conservar los saltos de línea al almacenar la salida del comando en una variable?

Me encontré con el mismo problema, una cotización ayudará

[email protected]:~/apps$ apps="abc
> def"
[email protected]:~/apps$ echo $apps
abc def
[email protected]:~/apps$ echo "$apps"
abc
def

Cita tus variables Aquí está el por qué:

$ f="fafafda
> adffd
> adfadf
> adfafd
> afd"

$ echo $f
fafafda adffd adfadf adfafd afd

$ echo "$f"
fafafda
adffd
adfadf
adfafd
afd

Sin comillas, el shell reemplaza a $TEMP con los caracteres que contiene (uno de los cuales es una nueva línea). Entonces, antes de invocar echo shell divide esa cadena en múltiples argumentos usando el Internal Field Separator (IFS), y pasa la lista resultante de argumentos a echo . Por defecto, el IFS está configurado en espacios en blanco (espacios, tabulaciones y líneas nuevas), por lo que el shell corta su $TEMP cadena en argumentos y nunca llega a ver la nueva línea, porque el shell lo considera un separador, al igual que un espacio.


Linux
  1. [Linux]:cómo excluir el directorio cuando se usa el comando de shell "tar"

  2. ¿Cómo asignar la salida de un comando a una variable de shell?

  3. ¿Almacenar la salida del comando en la variable de Shell?

  4. ¿Necesito citar sustituciones de comandos al asignar su salida a una variable?

  5. ¿Cómo establecer una variable igual a la salida de un comando en Grub2?

Cómo asignar la salida de un comando de Linux a una variable

Cómo ejecutar comandos de Shell a través del servidor HTTP

Cómo redirigir la salida del comando de shell

Cómo cambiar el color de salida de 'Echo' en Linux

Cómo almacenar un comando de Linux como una variable en el script de Shell

¿Cómo leer argumentos de línea de comando en scripts de Shell?