La variable de entorno IFS que significa Internal Field Separator (separador de campos internos), sirve para indicar que valor se usa como separador.
Un caso muy útil para la variable IFS que uso con frecuencia es la división de una IP en variables, por ejemplo:
ip=»1.2.3.4″
# dividimos la IP en 4 variables
IFS=. read ip1 ip2 ip3 ip4 <<< "$ip"
echo "$ip1 $ip2 $ip3 $ip4"
obtenemos 1 2 3 4
En el siguiente ejemplo tendremos un archivo llamado "agenda.txt" en el que cada línea del archivo esta compuesta por 5 campos cada uno y dichos campos están separados por una coma ",". Otra cosa interesante de notar en este ejemplo es que cada línea que se lee del archivo es almacenada en un ARRAY.
1 2 3 4 5 6 7 8 9 10 11 12 |
#!/bin/bash # Guardamos el valor por defector que tiene IFS SAVEIFS=$IFS IFS="," agenda=`cat agenda.txt` for registros in $agenda do echo -n ${registros[0]}" "${registros[1]}" "${registros[2]}" "${registros[3]}" "${registros[4]} done echo # Dejamos nuevamente el valor inicial de IFS IFS=$SAVEIFS |