Franz Napisano Luty 23, 2008 Zgłoszenie Share Napisano Luty 23, 2008 Witam! Mam nastepujacy problem w skrypcie BASH. Na zadane pytanie chce wczytac odpowiedz. Prawidlowa odpowiedz to "y" lub "n", pozostale znaki maja byc ignorowane. Dopiero po napotkaniu "y" lub "n" maja sie wykonac odpowiednie instukcje z CASEa.. oto fragment: echo -n "Zastapic w bazie? (y/n):" read x case "$x" in "y") instrukcje.. ... ;; "n") instrukcje.. ... ;; *) while [ "$x" != y|n ]; do read x done ;; esac Help.. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
@WalDo Napisano Luty 23, 2008 Zgłoszenie Share Napisano Luty 23, 2008 No a na czym polega problem? Bo tego nie napisałeś. Co Ci nie działa? Tzn. domyślam się, że $x != y|n - jak weźmiesz y|n w cudzysłów to pewnie będzie lepiej. Pętlę wywaliłbym poza case tzn. case w pętli a nie pętla w case. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
ecik__ Napisano Luty 23, 2008 Zgłoszenie Share Napisano Luty 23, 2008 Wystarczy pogooglać. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
Franz Napisano Luty 23, 2008 Autor Zgłoszenie Share Napisano Luty 23, 2008 Problem polega na tym , ze jesli podam odpowiedz inna niz "y" lub "n", to skypt ma mi to lyknac, ew wyrzucic echo "TYLKO y/n".. i czekac na prawidlowa odpowiedz.. czyli podaje np. k,l,m.. a skrypt ma nie robic nic.. dopiero gdy podam "y" lub "n" robi liste komend z CASEa i wychodzi z petli, wykonujac dalsze instrukcje... ... echo "Zastapic ? (y/n)" read x while [ "$x" != "y|n" ]; do case "$x" in "y") instrukcje.. ;; "n") instrukcje..;; *) echo "Tylko y lub n" ;; esac ... Ten wariant niestety tez nie dziala jak powinien... Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
bugaz1978 Napisano Luty 23, 2008 Zgłoszenie Share Napisano Luty 23, 2008 A nie powinno to wyglądać mniej więcej tak (tylko syntax trzeba poprawić) tak jak to powiedział Waldo case w pętli a nie na odwrót while (true) do echo "Zastapic ? (y/n)" read x case "$x" in "y") instrukcje.. ;;break; "n") instrukcje..;;break; *) echo "Tylko y lub n" ;; done; Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
@WalDo Napisano Luty 23, 2008 Zgłoszenie Share Napisano Luty 23, 2008 Ten wariant niestety tez nie dziala jak powinien... Jakoś ciężko się nam dogadać, wciąż opisujesz co program ma robić a nie piszesz nic o problemie. CO nie działa? Wróżka ma wolne. Jeśli nie działa, to masz jakieś błędy na konsoli chyba, no nie? U mnie działa poprawnie. Może dlatego, że zamknąłem pętlę Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
Franz Napisano Luty 23, 2008 Autor Zgłoszenie Share Napisano Luty 23, 2008 echo -n "Zastapic w bazie? (y/n):" read x while [ "$x" != "y|n" ]; do #dopoki x rozne od y lub n.. case "$x" in "y") echo $b >> plik.csv break ;; "n") echo $a >> plik.csv break ;; *) echo -n "Tylko 'y' lub 'n':" read x ;; esac done Ostateczna wersja ODPORNEGO na bledy fragmentu ktory moze przydac sie wielu podczas wprowadzania danych Pozro Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się