Szablon dialog --menu i pobieranie danych

Potrzebujesz pomocy z C, C++, perl, python, itp.
axlinux
Posty: 26
Rejestracja: 01 grudnia 2007, 18:47
Lokalizacja: Katowice

Szablon dialog --menu i pobieranie danych

Post autor: axlinux »

Witam

Zanim opowiem o swoim problemie chcę poinformować o tym że przeglądałem google i posty na tym forum. Podobny problem już się tutaj pojawił lecz nie potrafiłem wyłuskać z niego informacji i zastosować w moim skrypcie.

Mam do napisania skrypt z pomocą dialog który będzie prostym managerem plików pod konsolę.

Kod: Zaznacz cały

#!/bin/bash
dialog --title "Okno menu" \
--backtitle "Manager Plików" \
--menu "Menu" 9 50 3 \
1 Nowy Katalog \
2 Usuń Katalog \
3 Kopiuj \
4 Wstaw pusty plik


Problem polega na tym jak wyciągnąć z tego daną która posiada informację o tym co użytkownik wybrał.

Kombinowałem trochę lecz coś nie za bardzo wychodziło. Czy może mi ktoś pomóc napisać małego gotowca :D

Dziękuje z góry :)
Ventrue
Junior Member
Posty: 532
Rejestracja: 06 lipca 2007, 12:10
Lokalizacja: Lubin

Post autor: Ventrue »

Kod: Zaznacz cały

 #
# Script to create simple menus and take action according to that selected
# menu item
#
while :
 do
    clear
    echo "-------------------------------------"
    echo " Main Menu "
    echo "-------------------------------------"
    echo "[1] Show Todays date/time"
    echo "[2] Show files in current directory"
    echo "[3] Show calendar"
    echo "[4] Start editor to write letters"
    echo "[5] Exit/Stop"
    echo "======================="
    echo -n "Enter your menu choice [1-5]: "
    read yourch
    case $yourch in
      1) echo "Today is `date` , press a key. . ." ; read ;;
      2) echo "Files in `pwd`" ; ls -l ; echo "Press a key. . ." ; read ;;
      3) cal ; echo "Press a key. . ." ; read ;;
      4) vi ;;
      5) exit 0 ;;
      *) echo "Opps!!! Please select choice 1,2,3,4, or 5";
         echo "Press a key. . ." ; read ;;
 esac
done
Czyli: za pomocą case. Choć w powyższym przykładzie dialogu nie ma... Później spróbuję to zrobić :)
axlinux
Posty: 26
Rejestracja: 01 grudnia 2007, 18:47
Lokalizacja: Katowice

Post autor: axlinux »

Właśnie jest taka sprawa że bez dialogu potrafię zrobić ale właśnie potrzebuje aby skrypt był napisany za pomocą polecenia dialog.
rupek
Posty: 73
Rejestracja: 08 listopada 2007, 18:48

Post autor: rupek »

Kod: Zaznacz cały

#!/bin/bash 


dialog --title "Okno menu" \ 
--backtitle "Manager Plików" \ 
--menu "Menu" 9 50 3 \ 
1 Nowy Katalog \ 
2 Usuń Katalog \ 
3 Kopiuj \ 
4 Wstaw pusty plik > /tmp/test
read d < /tmp/test
i teraz pod zmienna $d masz to co zostało wybrane


lub

Kod: Zaznacz cały

#!/bin/bash
d=$(dialog --title "Okno menu" \ 
--backtitle "Manager Plików" \ 
--menu "Menu" 9 50 3 \ 
1 Nowy Katalog \ 
2 Usuń Katalog \ 
3 Kopiuj \ 
4 Wstaw pusty plik)
echo $d


i teraz równirż pod $d masz to co zostało wybrane
Ventrue
Junior Member
Posty: 532
Rejestracja: 06 lipca 2007, 12:10
Lokalizacja: Lubin

Post autor: Ventrue »

Kod: Zaznacz cały

dialog --title "Okno menu" \
--backtitle "Manager Plików" \
--menu "Menu" 13 50 6 \
"1" "Tworzenie nowego katalogu" \
"2" "Kopiowanie pliku" \
"3" "Coś innego" \
"4" "Zakończ"

if [ $? = 4 ]; then
exit 0
fi
Mi tak działa.
axlinux
Posty: 26
Rejestracja: 01 grudnia 2007, 18:47
Lokalizacja: Katowice

Post autor: axlinux »

Kod: Zaznacz cały

#!/bin/bash
d=$(dialog --title "Okno menu" \
--backtitle "Manager Plików" \
--menu "Menu" 9 50 3 \
1 Nowy Katalog \
2 Usuń Katalog \
3 Kopiuj \
4 Wstaw pusty plik)
echo $d

Chyba najbardziej odpowiadałaby mi ta wersja tylko że ona nie chce mi działać, tzn bash nie wywala błędów lecz konsola wyświetla pustą linijkę a po naciśnięciu entera pojawia się np 1 czyli to co powinno być zaznaczone z dialoga.
rupek
Posty: 73
Rejestracja: 08 listopada 2007, 18:48

Post autor: rupek »

axlinux, no bo to na takiej zasadzie działa
ODPOWIEDZ