Часто при работе с файлами в Bash используют
cat и while read, но есть более элегантное решение - команда mapfile (она же readarray).🌟 Почему mapfile удобнее?
Читает файл целиком в массив.
Избавляет от проблем с разбиением строк по пробелам.
Работает быстрее cat | while read.
Поддерживает фильтрацию и постобработку данных.
🌟 Как это работает? Допустим, у нас есть файл users.txt:
Vanya
Anna
Roman
Читаем его в массив одной командой:
```bash
mapfile -t users < users.txt
Теперь можно обращаться к строкам по индексам:
echo "Первый пользователь: ${users[0]}"
echo "Второй пользователь: ${users[1]}"
Первый пользователь: Vanya
Второй пользователь: Anna```
🌟 mapfile vs cat | while read. Обычный способ через while read ломает строки с пробелами:
while read user; do
echo "$user"
done < users.txt
Если строка "Vanya Ivanov",
while read разобьёт её на "Vanya" и "Ivanov". А mapfile сохранит строку целиком.🌟 Применение mapfile в реальных задачах
1️⃣ Удаление пустых строк из файла
mapfile -t lines < <(grep -v '^$' users.txt)
2️⃣ Чтение вывода команды в массив
mapfile -t processes < <(ps aux)
3️⃣ Чтение первых N строк
mapfile -t -n 5 top_lines < users.txt
BashTex 📱 #linux #utils