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:
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=$' ' for LINEA in $(find _directorio_ _que_buscar_ ) do echo $LINEA done
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