Пользовательский ввод в скриптах
Часть раздела Основы путешествия по Terminal на Coddy — урок 69 из 82.
Переменные полезны, но иногда вы хотите, чтобы ваш скрипт запрашивал у пользователя информацию во время выполнения. Команда read приостанавливает скрипт и ждет, пока пользователь что-то введет, затем сохраняет этот ввод в переменную.
Вот как это работает:
#!/bin/bash
echo "What is your name?"
read name
echo "Hello, $name!"Когда этот скрипт запускается, он выводит вопрос, ждет, пока пользователь введет свое имя и нажмет Enter, затем приветствует его. Команда read берет то, что вводит пользователь, и сохраняет это в переменной name.
Вы можете сделать приглашение чище, используя флаг -p, который объединяет сообщение приглашения и ввод на одной строке:
#!/bin/bash
read -p "Enter your name: " name
echo "Hello, $name!"Это отображает Enter your name: и ожидает ввода на той же строке, что выглядит более аккуратно. Флаг -p принимает текст приглашения как свой аргумент, за которым следует имя переменной для хранения ввода.
Ввод пользователя делает скрипты интерактивными и адаптивными. Вместо жесткого кодирования значений вы можете написать один скрипт, который работает по-разному в зависимости от того, что предоставляет пользователь каждый раз при запуске.
Задание
ЛегкоСоздайте shell-скрипт с именем greeter.sh, который запрашивает у пользователя любимый цвет и затем отображает сообщение, используя введённые данные.
Ваш скрипт должен:
- Начать с shebang-строки (
#!/bin/bash) - Использовать
readс флагом-pдля вывода приглашения:What is your favorite color? - Сохранить ввод в переменной с именем
color - Использовать
echoдля вывода:Nice! [color] is a great color!(где [color] — это ввод пользователя)
Сделайте скрипт исполняемым и запустите его. При запросе введите blue в качестве ответа.
Ваш вывод должен быть:
What is your favorite color? blue
Nice! blue is a great color!Подсказка: Создавайте скрипт построчно с помощью
echoс перенаправлением. Используйтеread -p "What is your favorite color? " colorдля вывода приглашения и захвата ввода, затемecho "Nice! $color is a great color!"для отображения результата.
Шпаргалка
Команда read приостанавливает выполнение скрипта и ожидает ввода пользователя, затем сохраняет его в переменную:
#!/bin/bash
echo "What is your name?"
read name
echo "Hello, $name!"Используйте флаг -p, чтобы отображать подсказку и ввод на одной строке:
#!/bin/bash
read -p "Enter your name: " name
echo "Hello, $name!"Флаг -p принимает текст подсказки в качестве своего аргумента, за которым следует имя переменной для хранения ввода.
Попробуйте сами
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы
4Каталоги
Создать каталогСкопировать каталогПереместить и переименовать каталогУдалить каталогИтог - Операции с каталогами7Содержимое файлов
Head и TailПодсчёт словКоманда sortКоманда uniqОсновы grepGrep с флагамиПовторение - Текстовый детектив10Проект анализатора логов
Обзор проектаПросмотр файла лога13Основы скриптинга оболочки
Что такое скрипт оболочкиСоздание и запуск скриптаПеременные в скриптахПользовательский ввод в скриптахОператор ifЦикл forЦикл whileИтог - Угадай число2Навигация
Вывод текущей рабочей директорииСписок файловСмена директорииАбсолютные и относительные путиДомашняя и корневая директорииИтог - Найди свой путь8Перенаправление
Стандартный выводПерезапись в файлДописывание в файлСтандартный вводСтандартная ошибкаПовторение - Сборщик логов11Права доступа
Понимание прав доступаЧтение прав доступаChmod с числамиChmod с символамиВладение файламиПовторение - Заблокируйте доступ14Проект скрипта резервного копирования
Обзор проектаПолучение пути к источнику3Файлы
Создать файлПрочитать файлСкопировать файлПереместить и переименовать файлУдалить файлПовторение - Операции с файлами6Символы подстановки и шаблоны
Звёздный символ подстановкиВопросительный символ подстановкиСкобочные символы подстановкиКомбинирование символов подстановкиПовторение - выборочные операции9Каналы
Что такое каналЦепочка двух командЦепочка нескольких командКанал с grepИтог - Конвейер данных