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
