whiptail или диалог

Я собираюсь создать скрипт, который будет использовать пользовательский ввод, поэтому я решил использовать whiptail, но немного путаю тот, который переносится и будет работать в ubuntu 10.x и выше и CentOs5.x и выше.

Я знаю, что read , но мне нужен диалог, как инструмент, поэтому, если кто-нибудь знает какую-либо альтернативу, просто дайте мне знать.

3 Solutions collect form web for “whiptail или диалог”

whiptail устанавливается по умолчанию для большинства deb-based систем, а dialog – нет.

Afair, основанный на rpm whiptail также является диалоговым окном по умолчанию.

Думаю, это важно для вас.

Таким образом, whiptail является правильным выбором из точки переносимости.

Также whiptail основан на newt , в то время как dialog основан на ncurses . С моей точки зрения, первый из них более красив (:

Почему бы не использовать оба варианта:

(Требуется bash 4)

 #!/usr/bin/env bash t(){ type "$1"&>/dev/null;} function Menu.Show { local DIA DIA_ESC; while :; do t whiptail && DIA=whiptail && break t dialog && DIA=dialog && DIA_ESC=-- && break exec date +s"No dialog program found" done; declare -A o="$1"; shift $DIA --backtitle "${o[backtitle]}" --title "${o[title]}" \ --menu "${o[question]}" 0 0 0 $DIA_ESC "$@"; } Menu.Show '([backtitle]="Backtitle" [title]="Title" [question]="Please choose:")' \ \ "Option A" "Stuff...." \ "Option B" "Stuff...." \ "Option C" "Stuff...." 

(Это не обязательно ответ, но я написал как таковой из-за количества кода. У меня нет практического опыта работы с whiptail . whiptail это позже, если пользователь whiptail тестируемое решение на это.)

Поскольку Bash Shell Scripting / Whiptail пишет:

Из README: whiptail предназначен для перехода в режим совместимости с диалоговым окном (1), но имеет меньше возможностей: некоторые диалоговые окна не реализованы, например, хвост, время, календарь и т. Д.

Это означает, что вам необязательно решать одно или другое. Просто определите, какой из них доступен, а затем используйте сценарий:

 # check whether whiptail or dialog is installed # (choosing the first command found) read dialog <<< "$(which whiptail dialog 2> /dev/null)" # exit if none found [[ "$dialog" ]] || { echo 'neither whiptail nor dialog found' >&2 exit 1 } # just use whichever was found "$dialog" --msgbox "Message displayed with $dialog" 0 0 

(Да, описанное выше обнаружение не сработает на инструментах, установленных внутри каталогов с именем, содержащим символы новой строки. Я просто сохранил его просто.)

  • Изменение / редактирование текста датчика whiptail
  • В то время как цикл с результатом от функции - BASH
  • Interesting Posts

    Подключите, если ссылка устарела

    Настройка / proc / sys / vm / drop_caches для очистки кеша

    как редактировать данные автора для gitg?

    ssh в учетную запись, у которой нет домашней директории

    Легкий MS Paint / MacPaint эквивалент FLOSS в Linux?

    Как создать скрипт в /etc/init.d?

    Как управлять параметрами страницы (полями, брошюрой) вывода `man -t` PostScript?

    Какая может внешняя команда «время» и зарезервированное слово «время»?

    Фоновые процессы смешивают порядок выполнения сценария оболочки

    Как я могу настроить привязку пользовательских ключей даже в SSH-ed на другой компьютер?

    Как читать веб-камеру, которая уже используется фоном?

    Как перебирать файлы, имена которых содержат вертикальные строки и пробелы в bash

    Игнорировать указанные абсолютные каталоги с завершением табуляции?

    Конвертировать двоичную кодировку, которую голова и Блокнот могут читать в UTF-8

    find и exec: почему эта команда не работает?

    Linux и Unix - лучшая ОС в мире.