Введение
В этой статье рассматриваются ключевые способы применения команды read, которая необходима для обработки интерактивного пользовательского ввода и парсинга текстовых данных при написании скриптов Bash в Linux. Вы сможете полностью освоить всё: от базовой обработки ввода до маскирования паролей (-s), таймаутов (-t), разделения по разделителю (IFS) и наиболее часто используемой на практике построчной обработки файлов с помощью цикла while.
1. Основы команды read, приглашение ввода (-p) и значения по умолчанию
Для создания отдельного рабочего пространства и перехода в него выполните команду mkdir -p ~/read-demo && cd ~/read-demo.

Команда read считывает одну строку со стандартного потока ввода и сохраняет её в переменную. Опция -p позволяет вывести приглашение для пользователя, а синтаксис ${변수명:-기본값} (${имя_переменной:-значение_по_умолчанию}) используется для подстановки значения по умолчанию, если значение переменной пусто.
В результате выполнения, поскольку ввод не был передан напрямую в команду read, переменная username осталась пустой, и согласно синтаксису ${username:-guest} было выведено значение по умолчанию guest.
⚙️ [Основные опции]
-p : задаёт строку приглашения (prompt), отображаемую на экране перед получением ввода.-s : включает скрытый режим, в котором вводимые символы не отображаются на экране (полезно для паролей и конфиденциальных данных).-t : задаёт ограничение по времени ожидания ввода (в секундах); по истечении указанного времени ввод завершается.-n : считывает только указанное количество символов и завершает ввод немедленно, без нажатия клавиши Enter.-r : предотвращает обработку обратного слэша (\) как escape-символа, считывая строку в исходном виде.-a : разбивает введённые слова по пробелам и последовательно сохраняет их в переменную-массив.-d : задаёт собственный символ-разделитель (delimiter) для завершения ввода вместо символа новой строки.

2. Маскирование пароля (-s) и ограничение времени ввода (-t)
Чтобы продолжить практику, перейдите в ранее созданный каталог ~/read-demo, выполнив команду cd ~/read-demo.

Ввод данных выполняется с маскированием отображения с помощью опции -s и ограничением по времени в 5 секунд с помощью опции -t 5.
Пароль был успешно передан в пределах установленного времени, и код возврата ($?) вывел 0.

3. Разделение на несколько переменных и массив с использованием разделителя (IFS) и опции -a
Чтобы продолжить практику, перейдите в ранее созданный каталог ~/read-demo, выполнив команду cd ~/read-demo.

Установив внутренний разделитель полей (IFS) равным запятой (,), считываем строку формата CSV, переданную через Here-String (<<<), с помощью команды read и сохраняем её по отдельности в переменные col1, col2 и col3.
В результате выполнения имя сервера, IP-адрес и имя службы, содержащиеся в строке, были корректно разделены по указанному разделителю и выведены в соответствующих переменных.

Задав разделитель (IFS) двоеточием (:) и используя опцию -a, сохраняем строку формата /etc/passwd в массив user_info.
Нулевой индекс массива — имя учётной записи (root) — и шестой индекс — путь к командной оболочке (/bin/bash) — были успешно извлечены и выведены на экран.
![bash -c ‘IFS=":" read -ra user_info «< “root:x:0:0:root:/root:/bin/bash”; echo “계정명: ${user_info[0]}, 셸: ${user_info[6]}”’](/ubuntu/20261007_143401_98/captures/s03_c03_bash_-c__IFS_____read_-ra_user_info______root_x_0.png)
4. Практика: построчная обработка больших файлов с помощью цикла while и read -r
Чтобы продолжить практику, перейдите в ранее созданный каталог ~/read-demo, выполнив команду cd ~/read-demo.

Для практики построчной обработки файлов создаём тестовый CSV-файл servers.csv, в котором имена серверов и их статус разделены запятыми.

Совместное использование цикла while и команды read -r с установкой внутреннего разделителя полей (IFS) в виде запятой (,) позволяет безопасно считывать строки файла servers.csv по одной.
В результате выполнения имя каждого сервера и информация о его статусе, записанные в файле, были успешно распределены по переменным name и status и выведены в заданном формате.
![while IFS="," read -r name status; do echo “[상태 점검] $name 서버는 현재 $status 상태입니다.”; done < servers.csv](/ubuntu/20261007_143401_98/captures/s04_c03_while_IFS_____read_-r_name_status__do_echo___%EC%83%81%ED%83%9C_%EC%A0%90%EA%B2%80.png)
Мы рассмотрели основные способы применения команды read в скриптах оболочки Linux — от базового синтаксиса до часто используемых практических приёмов построчного чтения файлов.
Используя разобранные опции и примеры, попробуйте самостоятельно создать интерактивные скрипты автоматизации под свои задачи.