Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Linux: ПолноС руководство». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 137

Автор ДСнис ΠšΠΎΠ»ΠΈΡΠ½ΠΈΡ‡Π΅Π½ΠΊΠΎ

#! /bin/sh

DIALOG=${DIALOG=dialog}


# ΠΆΠ΄Π΅ΠΌ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ количСство сСкунд

left=10

unit="сСкунд"


while test $left != 0

do

 $DIALOG --sleep 1 \

 --title "INFO BOX" \

 --infobox "Π­Ρ‚ΠΎ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ бокс. Он отличаСтся ΠΎΡ‚ \

 msgbox Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π½Π΅ ΠΆΠ΄Ρ‘Ρ‚, ΠΏΠΎΠΊΠ° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π°ΠΆΠΌΠ΅Ρ‚ Enter, \

 Π° ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‰Π°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΏΠΎ истСчСнии Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ \

 (Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ - 10 сСкунд). \

 Π£ вас $left $unit Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ это сообщСниС..." 10 52

 left=`expr $left β€” 1`

 test $left = 1 && unit="second"

done

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ --sleep 1 ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° dialog Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Ρ€ΠΈΡΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ ΠΎΠΊΠ½ΠΎ Ρ‡Π΅Ρ€Π΅Π· ΠΎΠ΄Π½Ρƒ сСкунду. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ --title Π·Π°Π΄Π°Π΅Ρ‚ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ Π²ΠΈΠ΄ΠΆΠΈΡ‚Π°, --infobox β€” опрСдСляСт Ρ‚ΠΈΠΏ Π²ΠΈΠ΄ΠΆΠΈΡ‚Π°, послС опрСдСлСния Π²ΠΈΠ΄ΠΆΠΈΡ‚Π° слСдуСт ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌΠΎΠ΅ сообщСниС, Π° ΠΏΠΎΡ‚ΠΎΠΌ β€” Ρ€Π°Π·ΠΌΠ΅Ρ€ Π²ΠΈΠ΄ΠΆΠΈΡ‚Π°.

Π’ Ρ†ΠΈΠΊΠ»Π΅ while ΠΌΡ‹ провСряСм, сколько сСкунд ΠΎΡΡ‚Π°Π»ΠΎΡΡŒ, ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Ρ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ left.

25.3. Π’ΠΈΠ΄ΠΆΠΈΡ‚ Yes-no

Часто Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‚ΡΡ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²Ρ‹Π΅ ΠΎΠΊΠ½Π°, ΡΠΏΡ€Π°ΡˆΠΈΠ²Π°ΡŽΡ‰ΠΈΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, согласСн Π»ΠΈ ΠΎΠ½ с дСйствиями ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Β«Π’Ρ‹ Ρ‚ΠΎΡ‡Π½ΠΎ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π²Ρ‹ΠΉΡ‚ΠΈ?Β» ΠΈΠ»ΠΈ Β«Π£Π΄Π°Π»ΠΈΡ‚ΡŒ этот Ρ„Π°ΠΉΠ»?Β». ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ ΠΆΠ΅ прСдлагаСтся Π΄Π²Π° Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° ΠΎΡ‚Π²Π΅Ρ‚Π° β€” Π”Π° ΠΈΠ»ΠΈ НСт. Для ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ‚Π°ΠΊΠΎΠ³ΠΎ Π΄ΠΈΠ°Π»ΠΎΠ³Π° ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ Π²ΠΈΠ΄ΠΆΠΈΡ‚ yes-no.

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ листинг дСмонстрируСт Ρ€Π°Π±ΠΎΡ‚Ρƒ с этим Π²ΠΈΠ΄ΠΆΠΈΡ‚ΠΎΠΌ:

Листинг 25.3. Π Π°Π±ΠΎΡ‚Π° с Π²ΠΈΠ΄ΠΆΠΈΡ‚ΠΎΠΌ yes-no

#!/bin/sh

DIALOG=${DIALOG=dialog}


$DIALOG --title "YES/NO BOX" --clear \

--yesno "ΠžΡ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ /dev/hda1?" 5 41


case $? in

0)

 echo "Π”Π°.";;

1)

 echo "НСт.";;

255)

 echo "ESC.";;

esac

Рис. 25.2. Π’ΠΈΠ΄ΠΆΠΈΡ‚ yes-no

Π’ΠΈΠ΄ΠΆΠΈΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠ΅: Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Π²ΠΈΠ΄ΠΆΠΈΡ‚Π° (yesno), тСкстовоС сообщСниС, Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ Π²ΠΈΠ΄ΠΆΠΈΡ‚Π°. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° dialog Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ значСния:

♦ 0, Ссли ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π°ΠΆΠ°Π» ΠΊΠ½ΠΎΠΏΠΊΡƒ Yes;

♦ 1, Ссли ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π°ΠΆΠ°Π» ΠΊΠ½ΠΎΠΏΠΊΡƒ No;

♦ 255, Ссли ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π°ΠΆΠ°Π» ΠΊΠ»Π°Π²ΠΈΡˆΡƒ Esc.

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

Рис. 25.3. Π’ΠΈΠ΄ΠΆΠΈΡ‚ InputBox

ЗначСния, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ dialog:

♦ 0, Ссли ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π²Π²Π΅Π» ΠΈ Π½Π°ΠΆΠ°Π» Enter ΠΈΠ»ΠΈ просто Π½Π°ΠΆΠ°Π» <Π’Π²ΠΎΠ΄>, Π½Π΅ ввСдя Π½ΠΈΡ‡Π΅Π³ΠΎ (Ρ‚ΠΎΠ³Π΄Π° Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» Π±ΡƒΠ΄Π΅Ρ‚ пуст);

♦ 1, Ссли ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π°ΠΆΠ°Π» Cancel;

♦ 255, Ссли ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π°ΠΆΠ°Π» Esc.

25.5. ЗависимыС ΠΈ нСзависимыС ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»ΠΈ

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° dialog позволяСт Π²Π°ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² своих сцСнариях зависимыС ΠΈ нСзависимыС ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»ΠΈ. ЗависимыС ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ΡΡ Π²ΠΈΠ΄ΠΆΠΈΡ‚ΠΎΠΌ radiolist, Π° нСзависимыС β€” checklist.

Листинг 25.5. НСзависимыС ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»ΠΈ

#!/bin/sh

DIALOG=${DIALOG=dialog}

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

trap "rm -f $tempfile" 0 1 2 5 15


$DIALOG --backtitle "ΠŸΡ€ΠΈΠΌΠ΅Ρ€" \

 --title "НСзависимыС ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»ΠΈ" \

 --checklist "Π”Π°Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ дСмонстрируСт Ρ€Π°Π±ΠΎΡ‚Ρƒ нСзависимых \n\

 ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»Π΅ΠΉ, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌΡ‹Ρ… с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠ°ΠΊΠ΅Ρ‚Π° Dialog \n\

 Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠŸΠ ΠžΠ‘Π•Π› для Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΈΠ»ΠΈ Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»Π΅ΠΉ.\

 \n\n\

 ΠšΠ°ΠΊΠΈΠ΅ произвСдСния Π²Ρ‹ Ρ‡ΠΈΡ‚Π°Π»ΠΈ?" 20 61 5 \

  "ΠŸΠΎΡ‡Ρ‚ΠΈ ΠΊΠ°ΠΊ люди" "Π‘Π°ΠΉΠΌΠ°ΠΊ" off \

  "Ѐауст" "Π“Π΅Ρ‚Π΅" ON \

  "ΠœΠ°ΡΡ‚Π΅Ρ€ ΠΈ ΠœΠ°Ρ€Π³Π°Ρ€ΠΈΡ‚Π°" "Π‘ΡƒΠ»Π³Π°ΠΊΠΎΠ²" off \

  "ΠœΠΈΡ€ Ρ‚Π΅Π½Π΅ΠΉ" "Π‘Π°ΠΉΠΌΠ°ΠΊ" off \

  "Π”Π΅ΠΌΠΎΠ½" "Π›Π΅Ρ€ΠΌΠΎΠ½Ρ‚ΠΎΠ²" on 2> $tempfile


retval=$?


choice=`cat $tempfile`

case $retval in

0)

 echo "Π’Ρ‹ Π²Ρ‹Π±Ρ€Π°Π»ΠΈ '$choice'";;

1)

 echo "НаТата Cancel";;

255)

 echo "НаТата ESC";;

esac

Рис. 25.4. НСзависимыС ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»ΠΈ

Π’Ρ‹Π±Ρ€Π°Π½Π½Ρ‹Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ значСния ΠΏΠΎΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ. БСйчас ΠΌΡ‹ просто Π²Ρ‹Π²Π΅Π΄Π΅ΠΌ Π΅Π³ΠΎ Π½Π° консоль. Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ списка checklist ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ β€” On ΠΈΠ»ΠΈ Off. Π­Ρ‚ΠΈ значСния Π½Π΅ Ρ‡ΡƒΠ²ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ ΠΊ рСгистру. Π’ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» выводятся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»ΠΈ.

Π Π°Π±ΠΎΡ‚Π° с Π²ΠΈΠ΄ΠΆΠΈΡ‚ΠΎΠΌ radiolist осущСствляСтся Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ Π² Π²ΠΈΠ΄ΠΆΠΈΡ‚ΠΎΠΌ checklist, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΌ лишь ΠΎΠ΄ΠΈΠ½ элСмСнт ΠΈ Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» Π±ΡƒΠ΄Π΅Ρ‚ записан ΠΈΠΌΠ΅Π½Π½ΠΎ этот элСмСнт.

Листинг 25.6. ЗависимыС ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»ΠΈ

#!/bin/sh

DIALOG=${DIALOG=dialog}

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

trap 'rm -f $tempfile" 0 1 2 5 15


$DIALOG --backtitle "ΠŸΡ€ΠΈΠΌΠ΅Ρ€" \

 --title "RADIOLIST BOX" --clear \

 --radiolist "Π­Ρ‚ΠΎ список зависимых ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»Π΅ΠΉ \n\

 ΠžΠ½ позволяСт Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ ΠΈΠ· списка \n\

 ΠšΠ°ΠΊΡƒΡŽ ΠΈΠ· этих ΠΊΠ½ΠΈΠ³ Π²Ρ‹ Ρ‡ΠΈΡ‚Π°Π»ΠΈ послСднСй?" 2 0 81 5 \

  "ΠŸΠΎΡ‡Ρ‚ΠΈ ΠΊΠ°ΠΊ люди" "Π‘Π°ΠΉΠΌΠ°ΠΊ" off \

  "Ѐауст" "Π“Π΅Ρ‚Π΅" off \

  "ΠœΠ°ΡΡ‚Π΅Ρ€ ΠΈ ΠœΠ°Ρ€Π³Π°Ρ€ΠΈΡ‚Π°" "Π‘ΡƒΠ»Π³Π°ΠΊΠΎΠ²" ON \

  "ΠœΠΈΡ€ Ρ‚Π΅Π½Π΅ΠΉ" "Π‘Π°ΠΉΠΌΠ°ΠΊ" off \

  "Π”Π΅ΠΌΠΎΠ½" "Π›Π΅Ρ€ΠΌΠΎΠ½Ρ‚ΠΎΠ²" on 2> $tempfile


retval=$?


choice=`cat $tempfile`

case $retval in

0)

 echo "Π’Ρ‹ Π²Ρ‹Π±Ρ€Π°Π»ΠΈ '$choice'";;

1)

 echo "НаТата Cancel";;

255)

 echo "НаТата ESC";;

esac

25.6. ΠžΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΡ мСню

Π’ΠΈΠ΄ΠΆΠΈΡ‚ MenuBox ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆ Π½Π° radiolist β€” ΠΎΠ½ΠΈ прямо-Ρ‚Π°ΠΊΠΈ Π±Ρ€Π°Ρ‚ΡŒΡ-Π±Π»ΠΈΠ·Π½Π΅Ρ†Ρ‹, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρƒ menubox Π½Π΅Ρ‚ слСва ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»Ρ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ/Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ MenuBox Π½ΡƒΠΆΠ½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ radiolist, Π½ΠΎ Π½Π΅ указывая on ΠΈΠ»ΠΈ off для элСмСнтов мСню.

Листинг 25.7. МСню

#!/bin/sh

DIALOG=${DIALOG=dialog}

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

trap "rm -f $tempfile" 0 1 2 5 15


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

 --menu "Π­Ρ‚ΠΎΡ‚ Π²ΠΈΠ΄ΠΆΠΈΡ‚ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π²Π°ΠΌ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ нСбольшоС мСню \n\

 MENU BOX прСдоставляСт ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚\

 ΠΈΠ· списка \n\

 Π”Π°Π½Π½Ρ‹ΠΉ Π²ΠΈΠ΄ΠΆΠΈΡ‚ Ρ‚Π°ΠΊΠΆΠ΅ позволяСт ΠΏΡ€ΠΎΠΊΡ€ΡƒΡ‡ΠΈΠ²Π°Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ \n\

 Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ стрСлки Π’Π’Π•Π Π₯/Π’ΠΠ˜Π—, Π° Ρ‚Π°ΠΊΠΆΠ΅ клавиши \n\

 1-9 для Π²Ρ‹Π±ΠΎΡ€Π°.\n\

 Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Π²Π°ΡˆΡƒ ОБ:" 2 0 71 4 \

  "Linux" "А Ρ‡Ρ‚ΠΎ, Ρ€Π°Π·Π²Π΅ Π΅ΡΡ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ систСмы" \

  "FreeBSD" "Π­Ρ‚ΠΎ Π»ΡƒΡ‡ΡˆΠ°Ρ ОБ" \

  "Windows" "ΠœΡ‹ ΠΊΡ€ΠΎΠΌΠ΅ Windows Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π²ΠΈΠ΄Π΅Π»ΠΈ..." \

  "MSDOS" "На ΠΌΠΎΠ΅ΠΉ Π΄Π²ΠΎΠΉΠΊΠ΅ Π½ΠΈΡ‡Π΅Π³ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ Π½Π΅ запускаСтся :(" 2> $tempfile


retval=$?


choice=`cat $tempfile`

case $retval in

0)

 echo "Π’Π°Ρˆ Π²Ρ‹Π±ΠΎΡ€ '$choice'";;

1)

 echo "НаТата Cancel";;

255)

 echo "НаТата Esc.";;

esac

Рис. 25.5. Π’ΠΈΠ΄ΠΆΠΈΡ‚ menubox

25.7. ΠšΠ°Π»Π΅Π½Π΄Π°Ρ€ΡŒ

Π­Ρ‚ΠΎΡ‚ Π²ΠΈΠ΄ΠΆΠΈΡ‚ позволяСт ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ ΡƒΠ΄ΠΎΠ±Π½ΠΎ ввСсти Π΄Π°Ρ‚Ρƒ. Π Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π½ΠΈΠΌ Π½ΡƒΠΆΠ½ΠΎ Ρ‚Π°ΠΊ: с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ клавиши Tab Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚Π΅ Π½ΡƒΠΆΠ½Ρ‹ΠΉ элСмСнт управлСния: ΠΊΠ½ΠΎΠΏΠΊΠ° OK, Cancel, ΠΏΠΎΠ»Π΅ измСнСния мСсяца, ΠΏΠΎΠ»Π΅ измСнСния Π³ΠΎΠ΄Π°, ΠΏΠΎΠ»Π΅ Π²Ρ‹Π±ΠΎΡ€Π° числа; с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ стрСлок Π²Π²Π΅Ρ€Ρ…/Π²Π½ΠΈΠ· ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚Π΅ Π½ΡƒΠΆΠ½ΠΎΠ΅ значСния мСсяца, Π³ΠΎΠ΄Π°, числа ΠΈ Π½Π°ΠΆΠΈΠΌΠ°Π΅Ρ‚Π΅ <Π’Π²ΠΎΠ΄>. Выбранная Π²Π°ΠΌΠΈ Π΄Π°Ρ‚Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½Π° Π½Π° консоли.

Листинг 25.8. ΠšΠ°Π»Π΅Π½Π΄Π°Ρ€ΡŒ

#!/bin/sh

: ${DIALOG=dialog}


USERDATE=`$DIALOG --stdout --title "CALENDAR" β€”calendar\

"Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Π΄Π°Ρ‚Ρƒ..." \

0 0 1 1 2004`


case $? in

0)

 echo "Π’Ρ‹ Π²Ρ‹Π±Ρ€Π°Π»ΠΈ Π΄Π°Ρ‚Ρƒ: $USERDATE.";;

1)

 echo "НаТата Cancel.";;

255)