IFS (variable de entorno)

La variable de entorno IFS que significa Internal Field Separator (separador de campos internos), sirve para indicar que valor se usa como separador. Puede usarse para varios trucos de los cuales pongo a continuación los más interesantes:

Separador en un bucle con espacios

Si en un bucle con un for nos aparece uno o más espacios, no nos saldrá la salida como esperamos ya que el forinterpreta el espacio como un separador con lo cual en vez de tener un listado como este (es un mero ejemplo):

linea1
linea2
linea 3
linea4

obtendremos un listado como este:

linea1
linea2
linea
3
linea4

que está claro no es lo que buscamos :-(. Para solucionar esto solo tenemos que añadir una simple línea delante del forpara que no trate los espacios como separador y obtengamos el listado como queremos:

export IFS=$'\n'
for LINEA in $(find _directorio_ _que_buscar_ )
do
echo $LINEA
done

Dividir una linea por un carácter (tipo split)

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

Retro

Lugares

Redes

Sistemas

Varios