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 и вызов внешних скриптов
  • Изменение / редактирование текста датчика whiptail
  • Изменение размера экрана Whiptail до полного терминала
  • Цикл сценария Bash для увеличения параметров
  • Странное поведение whiptail
  • Linux и Unix - лучшая ОС в мире.