Linux. Полное руководство.

25.4. Окно ввода текста.

Следующим по частоте применения после информационных виджитов и виджита yes-no следует виджит ввода текстовой информации — Inputbox. Принцип работы данного виджита следующий:

♦ Мы определяем имя временного файла, в который будет записано введенное пользователем сообщение.

♦ Вызываем программу dialog с параметром --inputbox.

♦ Перенаправляем вывод программы во временный файл (программа выведет введенное пользователем значение).

♦ Выводим или обрабатываем каким-либо другим способом содержимое временного файла.

Листинг 25.4. Виджит Inputbox.

#!/bin/sh.

DIALOG=${DIALOG=dialog}.

Tempfile=`tempfile 2>/dev/null` || tempfile=/tmp/test$$

Trap "rm -f $tempfile" 0 1 2 5 15.

$DIALOG --title "INPUT BOX" --clear \

--inputbox "Данный виджит используется для ввода \

Информации \n\n \

Введите свое имя:" 16 51 2 > $tempfile.

Retval=$?

Case $retval in.

0).

 echo "Вы ввели `cat $tempfile`";;

1).

 echo "Нажата Cancel";;

255).

 if test -s $tempfile ; then.

  cat $tempfile.

 else.

  echo "Нажата ESC.".

 fi.

 ;;

Esac.

Linux. Полное руководство.

Рис. 25.3. Виджит InputBox.

Значения, возвращаемые программой dialog:

♦ 0, если пользователь что-то ввел и нажал Enter или просто нажал <Ввод>, не введя ничего (тогда временный файл будет пуст);

♦ 1, если пользователь нажал Cancel;

♦ 255, если пользователь нажал Esc.