Strona 1 z 1

Program decyzyjny w bashu

: 02 cze 2010, 13:33
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.

Odp: Program decyzyjny w bashu

: 02 cze 2010, 14:13
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. :)