Как создавать диалоговые блоки в интерактивных shell скриптах

Как создавать диалоговые блоки в интерактивных shell скриптах Диалоговые блоки bash

whiptail - Как создавать диалоговые блоки в интерактивных shell скриптах

Когда вы устанавливаете новые программы в терминале, вы могли часто видеть появляющиеся информативные диалоговые блоки для обратной связи с вами. Типы диалоговых блоков различны: от простых диалогов да/нет до полей ввода, блоков паролей, чеклистов, меню и так далее. Преимущества использования таких дружественных к пользователю блоков очевидны, ведь они интуитивно направляют вас для ввода необходимой информации.

Создаём блок с сообщением

Пример: images/development/development/b1-1.jpg

Создание Да/Нет блоков

Одним из частных пользовательских вводов является Да или Нет. В этом случае может быть использован диалоговый блок Да/Нет. Пример: images/development/development/b2-1.jpg

Опционально вы можете настроить текст кнопок Да и Нет с помощью опций "—yes-button" and "—no-button"

Пример: images/development/development/b3-1.jpg

Создаём блок свободного ввода

Если нужно принять любой произвольный текст от пользователя, вы можете использовать этот блок ввода Пример: images/development/development/b4-2.jpg

Создание блока для ввода пароля

Блок пароля полезен, когда вы хотите получить чувствительную информацию от пользователя.

Пример: images/development/development/b5-1.jpg

Создание меню

Когда вы хотите спросить пользователя выбрать один из нескольких произвольных вариантов, вы можете использовать меню. Пример: images/development/development/b6.jpg

Создание диалога радиолист

Блок радиолист схож по смыслу с меню в том смысле, что вы можете выбрать только одну опцию из списка доступных опций. В отличие от блока меню, тем не менее, вы можете отобразить, какая опция выбрана по умолчанию, определив её статус. images/development/development/b9.jpg

Создаём диалок чеклиста

Чеклист полезен, когда вы хотите попросить пользователя выбрать более чем один вариант из списка опций, он отличается от радиолиста, в котором можно сделать только один выбор. Пример: images/development/development/b10.jpg

Сооздание строки прогресса

Другой дружественный пользователю диалоговый блок это прогресс бар. whiptail читает из стандартного ввода проценты (от 0 до 100) и отображает соответствующий индикатор датчика. images/development/development/b7.jpg

Теперь вы увидели, как легко создавать полезные диалоговые блоки в интерактивных шелл скриптах. п.с. Все примеры, кроме последнего, одинаково хорошо работают и в bash, и в sh, Но последний пример не будет работать в простом sh из-за конструкции (i = 0 ; i <= 100 ; i+=20). Поэтому для простого sh подойдёт следующий код:
More