LINUX – Uso de IFS y comando READ en SCRIPTS BASH.-

El IFS (Input Field Separator) es una variable global cuyo valor es el carácter o caracteres que funcionan como delimitador para separar un valor de otro en la línea leída. Podemos imprimir el valor del IFS con el siguiente comando:

$ cat -et <<<"$IFS"
 ^I$
$

Como podemos ver, el IFS por defecto es cualquiera de:

  • un espacio en blanco
  • un tabulador
  • un salto de línea

Pero en ocasiones, podemos tener como valor de una variable una secuencia de valores unidos por otro tipo de separador (una coma, dos puntos, etc…)

Cambiando temporalmente el valor del IFS, podemos utilizar el comando «read» para descomponer este valor en los valores individuales de que consta.

Por ejemplo, supongamos que tenemos que procesar una línea en el formato del fichero /etc/passwd

linea="miusuario:x:1002:1002::/home/miusuario:/bin/sh"

Comenzamos por guardar el valor de la variable IFS, para poder recuperarlo más tarde, y asignar temporalmente el carácter «:» como separador

IFS_anterior="$IFS"
IFS=:

Con esto, podemos descomponer el valor de la línea en los campos de que consta, con el comando «read»:

read usuario clave uid gid info home shell <<< "$linea"

Y por último, volvemos a asignar a IFS el valor que tenía previamente:

IFS=»$IFS_anterior»
Esta entrada fue publicada en Unix - Linux. Guarda el enlace permanente.

1 respuesta a LINUX – Uso de IFS y comando READ en SCRIPTS BASH.-

  1. Rafael F. dijo:

    Muchas gracias, por el aporte. Tan solo indicar que no me funcionó la última línea.
    He cambiado la sugerida:
    IFS=»$IFS_anterior»
    Por esta otra:
    IFS=”$IFS_anterior”
    y ya me ha devuelvo el valor original.
    Gracias de nuevo, y saludos 😉

Deja una respuesta

Tu dirección de correo electrónico no será publicada.

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.