Книга: Краткое введение в программирование на Bash
Чтение ввода пользователя
Чтение ввода пользователя
А теперь — самое интересное. Мы напишем свой скрипт так, что он будет взаимодействовать с пользователем, а пользователь с ним. Команда для получения данных от пользователя —read. Это встроенная в bash команда, сохраняющая ввод пользователя в указанной переменной:
#!/bin/bash
# спросить у пользователя его имя и поздороваться с ним
echo -n "Введите свое имя: "
read user_name
echo "Привет $user_name!"
Переменная здесь — это user_name. Конечно, мы могли бы назвать ее как угодно. Оператор read прервет выполнение скрипта и будет ждать, пока пользователь введет что-нибудь и нажмет клавишу ENTER. Если клавиша ENTER была нажата без ввода чего-либо, read запустит следующую строку кода. Попробуйте это сделать. Ниже приведен тот же пример, только на этот раз мы проверяем, вводит ли пользователь что-либо:
#!/bin/bash
# спрашиваем имя пользователя и выводим приветствие
echo -n "Введите имя: "
read user_name
# проверка ввода пользователя
if [ -z "$user_name" ]; then
echo "Вы не сказали мне свое имя!"
exit
fi
echo "Привет $user_name!"
В приведенном примере, если пользователь нажал ENTER и не ввел при этом ничего, наша программа напишет об этом и завершит свою работу. В противном случае она напечатает приветствие. Получение пользовательского ввода полезно для интерактивных программ, которые требуют от пользователя ввести какие-то данные.
- Листинг 10.1. (simpleid.c) Отображение идентификаторов пользователя и группы
- Сохранение информации о пользователях при миграции
- Реальный (RID) и эффективный (EUID) идентификаторы пользователя
- 12. Лекция: Создание приложений с графическим интерфейсом пользователя.
- Создание пользователя и группы на рабочей станции
- 4.4.3. Чтение и запись
- 1.1 Режимы ядра и пользователя Windows
- 1.6 Драйверы и буферы ввода-вывода
- Управление пользователями и разрешениями узла
- Глава 6 BIOS – базовая система ввода-вывода
- 5.2.2.2. Устройства ввода информации в персональный компьютер
- Как быстро переключаться между двумя пользователями, не закрывая их программ?