GNU/Linux >> Tutoriales Linux >  >> Linux

Al configurar IFS para que se divida en saltos de línea, ¿por qué es necesario incluir un retroceso?

Porque como dice el manual de bash con respecto a la sustitución de comandos:

Bash realiza la expansión ejecutando el comando y reemplazando la sustitución del comando con la salida estándar del comando, eliminando cualquier salto de línea final.

Entonces, agregando \b impides la eliminación de \n .

Una forma más limpia de hacer esto podría ser usar $'' citando, así:

IFS=$'\n'

Acabo de recordar la forma más fácil. Probado con bash en Debian Wheezy.

IFS="
"

no es broma :)


Es un hack por el uso de echo y sustitución de comandos.

prompt> x=$(echo -en "\n")
prompt> echo ${#x}
0
prompt> x=$(echo -en "\n\b")
prompt> echo ${#x}
2

Los $() elimina las líneas nuevas finales y \b previene \n de ser una nueva línea final mientras que es muy poco probable que aparezca en cualquier texto. IFS=$'\n' es la mejor manera de configurar IFS para que se divida en saltos de línea.


Linux
  1. ¿Cuándo son necesarias las comillas dobles?

  2. ¿Por qué Printf es mejor que Echo?

  3. ¿Por qué es legal establecer una variable antes de un comando en Bash?

  4. En `while Ifs=Read..`, ¿por qué Ifs no tiene efecto?

  5. ¿Cambiar fuente en Echo Command?

Comando Echo en Linux (con ejemplos)

16 ejemplos de comandos de eco en Linux

Comando Echo en Linux con ejemplos

Comando echo en Linux:7 ejemplos prácticos

¿Cómo dividir una cadena con comillas (como argumentos de comando) en bash?

¿Por qué usar echo antes de instalar un nuevo software?