Цикл select — управляющая структура, используемая в скриптах Bash для создания простых меню из списка опций. Он отображает указанные варианты с числовым индексом, предлагает пользователю выбрать один из них и сохраняет значение в переменной. Этот цикл часто используется в интерактивных сценариях, где для определения следующего действия требуется ввод пользователя.
В этой статье мы покажем несколько примеров использования select в скриптах Bash.
Содержание:
- Синтаксис цикла select
- Выбор элемента из списка
- Настройка пользовательского запроса
- Простой скрипт с циклом select для системных администраторов
- Усложненный скрипт для мониторинга загруженности жесткого диска и нагрузки на ЦП
- Выводы
Синтаксис цикла select
Общий синтаксис цикла select в сценариях оболочки Linux следующий:
Где:
[variable]— переменная, в которой будет храниться значение выбранного элемента;[list]— список вариантов, разделенных пробелами;[commands]— код для выполнения в зависимости от выбора пользователя.
Выбор элемента из списка
Для примера напишем простой скрипт, в котором попросим пользователя выбрать фрукт из списка:
Читайте также: Команда zenity в Linux с примерами.
Мы предоставили список из четырех элементов: Apple, Banana, Orange и Quit. Каждый элемент автоматически получает свой числовой индекс, начиная с 1 у Apple. Чтобы выбрать вариант, пользователю нужно в интерактивном режиме ввести соответствующий номер и нажать Enter.
Обратите внимание, что в этом примере нет условия для выхода из цикла. То есть после выбора опции select продолжит выполняться и снова запросит ввод индекса. Чтобы завершить работу цикла после первого выбора, нужно добавить оператор break:
Настройка пользовательского запроса
Чтобы пользователю было легче понять, что от него требуется, можно настроить собственную подсказку. По умолчанию приглашение к вводу в цикле отображается как #?. Для его изменения в скрипте перед select нужно задать специальную переменную PS3. В качестве ее значения следует указать текст запроса пользователю. Например:
Читайте также: 10 полезных советов для написания эффективных bash скриптов в Linux.
На скриншоте выше видно, что теперь вместо стандартного #? отображается текст Choose a fruit:.
Простой скрипт с циклом select для системных администраторов
Скрипты Bash часто используются системными администраторами для автоматизации процессов мониторинга Linux. Следующий простой сценарий позволяет быстро отследить:
- загруженность жесткого диска;
- время работы ОС;
- использование ресурсов ОЗУ;
- количество и имена пользователей.
Давайте детальнее разберем код скрипта:
PS3— специальная переменная в Bash, которая имеет значениеChoose an action:.action— переменная, в которой хранится значение, выбранное пользователем:- Show Disk Usage;
- Show Uptime;
- Check Memory;
- List Logged-in Users;
- Quit.
case $action in— начало конструкцииcase, обрабатывающая выбор, сделанный пользователем:"Show Disk Usage") df -h ;;— выполняется командаdf -h, показывающая информацию о файловых системах и их использовании в человекочитаемом формате;"Show Uptime") uptime ;;— выполняетсяuptime, которая выводит статистику о времени работы ОС, средней нагрузке на ЦП и числе пользователей;"Check Memory") free -h ;;— запускаетсяfree -h, которая отображает процент использование памяти ОЗУ в удобочитаемом формате;"List Logged-in Users") who ;;— применяется командаwho, выводящая в окно терминала список пользователей, которые в данный момент вошли в Linux;"Quit") echo "Goodbye!" break ;;— выводится указанное сообщение, активируется операторbreak, и цикл завершается;*) echo "Invalid choice, try again." ;;— если пользователь вводит некорректный числовой индекс (не соответствующий ни одному из вариантов), печатается уведомление об этом и цикл продолжает работать.
Читайте также: Использование оператора case в скриптах Bash.
Усложненный скрипт для мониторинга загруженности жесткого диска и нагрузки на ЦП
Предлагаем немного усложнить предыдущий скрипт, сократив при этом количество опций для выбора. В качестве примера пользователь получает интерактивное меню для просмотра состояния жесткого диска и нагрузки на процессор. Внутри конструкции case добавим проверки с использованием if-else, что усложнит логику: скрипт анализирует процент загруженности диска и уровень нагрузки ЦП, чтобы выводить предупреждения при превышении заданных порогов.
Вот как теперь конструкция case обрабатывает выбранный пользователем пункт:
- В блоке Disk Usage используется команда
df, а затемawkиtrдля получения процента загруженности жесткого диска. Далееifпроверяет, превышает ли он 90%, и выводит предупреждение. - В блоке CPU Load применяются
uptimeиawkдля извлечения значения средней нагрузки на ЦП. Сравнение с порогом (например, 2.0) выполняется с помощьюbc, и при превышении выводится предупреждение. - При выборе Quit скрипт завершает работу через оператор
break.
Читайте также: Использование операторов if, elif, else в скриптах Bash.
Выводы
Цикл select в Bash — это простой способ создать интерактивное меню для выбора пользователем одной из предложенных опций. Он удобен при написании системных скриптов, позволяя обрабатывать ввод с помощью конструкции case и, при необходимости, дополнять логику условиями if-else.
Спасибо за время, уделенное прочтению статьи!
Если возникли вопросы — задавайте их в комментариях.
Подписывайтесь на обновления нашего блога и оставайтесь в курсе новостей мира инфокоммуникаций!
Чтобы знать больше и выделяться знаниями среди толпы IT-шников, записывайтесь на курсы Cisco, курсы по кибербезопасности, полный курс по кибербезопасности, курсы DevNet / DevOps (программируемые системы) от Академии Cisco, курсы Linux от Linux Professional Institute на платформе SEDICOMM University (Университет СЭДИКОММ).
Курсы Cisco, Linux, кибербезопасность, DevOps / DevNet, Python с трудоустройством!
- Поможем стать экспертом по сетевой инженерии, кибербезопасности, программируемым сетям и системам и получить международные сертификаты Cisco, Linux LPI, Python Institute.
- Предлагаем проверенную программу с лучшими учебниками от экспертов из Cisco Networking Academy, Linux Professional Institute и Python Institute, помощь сертифицированных инструкторов и личного куратора.
- Поможем с трудоустройством и стартом карьеры в сфере IT — 100% наших выпускников трудоустраиваются.
- Проведем вечерние онлайн-лекции на нашей платформе.
- Согласуем с вами удобное время для практик.
- Если хотите индивидуальный график — обсудим и реализуем.
- Личный куратор будет на связи, чтобы ответить на вопросы, проконсультировать и мотивировать придерживаться сроков сдачи экзаменов.
- Всем, кто боится потерять мотивацию и не закончить обучение, предложим общение с профессиональным коучем.
- отредактировать или создать с нуля резюме;
- подготовиться к техническим интервью;
- подготовиться к конкурсу на понравившуюся вакансию;
- устроиться на работу в Cisco по специальной программе. Наши студенты, которые уже работают там: жмите на #НашиВCisco Вконтакте, #НашиВCisco Facebook.































