mapfile también llamado (read array) es un comando del shell Bash que se usa para leer arrays. Lee líneas de la entrada estándar en una variable de array. Además, el archivo de mapa debe leer desde la sustitución (< <) y no desde una tubería. Además, mapfile es más rápido y conveniente en comparación con un ciclo de lectura. Devuelve 1 o 0 dependiendo de si el comando fue exitoso o no. Si no se especifica ningún nombre de array, se utiliza la variable predeterminada MAPFILE como variable de array de destino.
Sintaxis: mapfile [array]
Alternativamente, podemos usar read array [arrayname] en lugar de mapfile.
Ejemplo 1. Lectura de una array de un archivo:
$ mapfile MYFILE < example.txt $ echo ${MYFILE[@]} $ echo ${MYFILE[0]}
Producción:
Ejemplo 2. Capture la salida en una array:
$ mapfile GEEKSFORGEEKS < <(printf "Item 1\nItem 2\nItem 3\n") $ echo ${GEEKSFORGEEKS[@]}
Aquí, Item1, Item2 y Item 3 se almacenaron en la array GEEKSFORGEEKS.
Producción:
Ejemplo 3. Elimina las líneas nuevas y almacena el elemento usando -t:
$ mapfile -t GEEKSFORGEEKS< <(printf "Item 1\nItem 2\nItem 3\n") $ printf "%s\n" "${GEEKSFORGEEKS[@]}"
Producción:
Ejemplo 4. Lee el número especificado de líneas usando -n:
$ mapfile -n 2 GEEKSFORGEEKS < example.txt $ echo ${GEEKSFORGEEKS[@]}
Lee como máximo 2 líneas. Si se especifica 0, se consideran todas las líneas.
Producción: