Program decyzyjny w bashu

Bash, C, C++, Java, PHP, Ruby, GTK, Qt i wiele innych - wszystko tutaj.
lsarneck
Piegowaty Guziec
Piegowaty Guziec
Posty: 3
Rejestracja: 30 gru 2009, 20:38
Płeć: Mężczyzna
Wersja Ubuntu: 10.10
Środowisko graficzne: GNOME
Architektura: x86

Program decyzyjny w bashu

Post autor: lsarneck »

Witam

Mam mały problem. Muszę napisać program decyzyjny na zaliczenie i wybrałem do tego basha.
Na razie napisałem tyle. Program uruchamia się bez błędu. Ale jak wybiore "Start programu", później "Na większej ilości maszyn" to nie przechodzi mi do następnego menu jak wybiorę "Stacje robocze i serwery" to przechodzi do następnego menu ale jak tam już wybiorę "Sprawdzic poprawnosc konfiguracji i uaktualnia programu antywirusowego " już mi dalej nie przechodzi.
Program zachowuje się tak jak by nie widział kolejnych case in.
Proszę o szybką pomoc, program muszę napisać do soboty.

Kod: Zaznacz cały

#!/bin/bash

while true; do
start="$(zenity --width=350 --height=150 --list --column "" --title="Program Decyzyjny" \
"Start Programu" \
"Zakoncz Program ")"

case "${start}" in
"Start Programu" )
zenity --info --text "Okreslenie zakresu ataku wirusowego"
while true; do
etap1="$(zenity --width=400 --height=150 --list --column "" --title="Okresl rodzaj ataku wirusowego" \
"Stacje robocze lub serwery" \
"Na wiekszej ilosci maszyn " \
"Back")"

	case "${etap1}" in
	"Stacje robocze lub serwery" )
	while true; do
	etap2="$(zenity --width=600 --height=150 --list --column "" --title="Proponowane operacje" \
	"Podjac probe zdalnego wyleczenia stacji roboczej" \
	"Sprawdzic poprawnosc konfiguracji i uaktualnien programu antywirusowego " \
	"Back")"

		case "${etap1}" in
		"Na wiekszej ilosci maszyn" )
		while true; do
		etap3="$(zenity --width=400 --height=150 --list --column "" --title="Proponowane operacje" \
		"Podjecie srodkow zapobiegawczych" \
		"Znalesc metode usuniecia zagrozenia" \
		"Powiadomic uzytkownikow o zagrozeniu " \
		"Back")"

			case "${etap2}" in
			"Podjac probe zdalnego wyleczenia stacji roboczej" )
			while true; do
			etap4="$(zenity --width=400 --height=150 --list --column "" --title="Czy powiodla sie proba wyleczenia? " \
			"TAK " \
			"NIE " \
			"Back")"

				case "${etap3}" in
				"Powiadomic uzytkownikow o zagrozeniu" )
				zenity --info --text "Powiadomiono uzytkownik??w " 
				;;
				*)
				esac
				break

					case "${etap4}" in
					"TAK" )
					zenity --info --text "Stacja robocza zostala wyleczona "
					;;
					*)
					break
					;;
					esac
					done
    
			;;
			*)
			break
			;;
			esac
			done

		;;
		*)
		break
		;;
		esac
		done

	;;
	*)
	break
	;;
	esac
	done

;;
*)
break
;;
esac
Sorki zapomniałem zeby w CODE wkleić program.
Awatar użytkownika
sulti
Serdeczny Borsuk
Serdeczny Borsuk
Posty: 139
Rejestracja: 17 wrz 2007, 15:31
Płeć: Mężczyzna
Wersja Ubuntu: 12.10
Środowisko graficzne: Unity
Architektura: x86

Odp: Program decyzyjny w bashu

Post autor: sulti »

Ten kod to masakra jakaś... Wklej go w znaczniki CODE i porób wcięcia bo w tym momencie jest całkowicie nieczytelny.
I druga rzecz - zrobiłeś schemat blokowy do swojego programu? Ile czasu poświęciłeś na przeanalizowanie jego przebiegu? Za dużo chaosu i za dużo zagnieżdżenia case'ów...
Z tego co widzę masz case ${etap1} w środku case ${etap1}... Chaos once again. :)
You tried, and you failed, so the lesson is, never try.
ODPOWIEDZ

Wróć do „Programowanie”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 8 gości