mapfile (alias readarray) читает строки в массив за один вызов — чище цикла while IFS= read -r line.

mapfile -t lines < /etc/hosts              # -t убирает \n в конце каждой строки
echo "${#lines[@]}"                        # количество строк
echo "${lines[0]}"                         # первая строка

mapfile -t hosts < <(grep -v '^#' /etc/hosts)  # из process substitution
mapfile -t -n 10 head10 < bigfile         # только первые 10 строк

В отличие от arr=($(cat file)), не ломается на строках с пробелами и не делает glob-expansion. readarray — полный синоним. Требует bash 4.0+.

#bash #linux #sysadmin