Menu
Coddy logo textTech

Пользовательский ввод в скриптах

Часть раздела Основы путешествия по 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 принимает текст приглашения как свой аргумент, за которым следует имя переменной для хранения ввода.

Ввод пользователя делает скрипты интерактивными и адаптивными. Вместо жесткого кодирования значений вы можете написать один скрипт, который работает по-разному в зависимости от того, что предоставляет пользователь каждый раз при запуске.

challenge icon

Задание

Легко

Создайте shell-скрипт с именем greeter.sh, который запрашивает у пользователя любимый цвет и затем отображает сообщение, используя введённые данные.

Ваш скрипт должен:

  1. Начать с shebang-строки (#!/bin/bash)
  2. Использовать read с флагом -p для вывода приглашения: What is your favorite color?
  3. Сохранить ввод в переменной с именем color
  4. Использовать 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 принимает текст подсказки в качестве своего аргумента, за которым следует имя переменной для хранения ввода.

Попробуйте сами

Терминал
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Основы