Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2010-05-22 16:12:58

  buli - Użytkownik

buli
Użytkownik
Skąd: Człuchów
Zarejestrowany: 2006-04-30

Zabezpieczenie skryptu

Witam, jak można zabezpieczyć skrypt przed sytuacją w której bez wpisania żadnego znaku ktoś wciśnie enter?

Czy włączyć logowanie zdarzeń? (T/N):
<enter>
./small_1: line 42: [: =: unary operator expected
./small_1: line 51: [: =: unary operator expected

Kod:

echo "Czy włączyć logowanie zdarzeń? (T/N):";
read LOG;
if [ $LOG ]
    then
    while [ ! $LOG = "T" ] && [ ! $LOG = "N" ]
    do
        echo "Czy włączyć logowanie zdarzeń? (T/N):";
        read LOG;
    done
fi

Ostatnio edytowany przez buli (2010-05-22 16:57:24)


blehh :F

Offline

 

#2  2010-05-22 17:27:01

  urbinek - Dzban Naczelny

urbinek
Dzban Naczelny
Skąd: Sosnowiec
Zarejestrowany: 2009-10-01
Serwis

Re: Zabezpieczenie skryptu

nie mam basha pod ręką ale chyba

Kod:

if [ $LOG!='' ]

ale lepiej na while zrobić

P.S.
http://ultra.ap.krakow.pl/~bar/kursbasha/main.html


A w wolnym czasie, robię noże :)
http://nginx.urbinek.eu/_photos/signature.png

Offline

 

#3  2010-05-22 17:48:22

  buli - Użytkownik

buli
Użytkownik
Skąd: Człuchów
Zarejestrowany: 2006-04-30

Re: Zabezpieczenie skryptu

Sprawdzalem to zanim napisalem posta..
Czy włączyć logowanie zdarzeń? (T/N):

./small_1: line 42: [: =: unary operator expected
./small_1: line 52: [: =: unary operator expected

Kod:

echo "Czy włączyć logowanie zdarzeń? (T/N):";
read LOG;
if [ $LOG ]
    then
    while [ ! $LOG = "T" ] && [ ! $LOG = "N" ] && [ $LOG = '' ]
    do
        echo "Czy włączyć logowanie zdarzeń? (T/N):";
        read LOG;
    done
fi

blehh :F

Offline

 

#4  2010-05-22 17:56:01

  winnetou - złodziej wirków ]:->

winnetou
złodziej wirków ]:->
Skąd: Jasło/Rzeszów kiedyś Gdańs
Zarejestrowany: 2008-03-31
Serwis

Re: Zabezpieczenie skryptu

daj if'a i while'a w podwójny nawias [[ ]]


LRU: #472938
napisz do mnie: ola@mojmail.eu
Hołmpejdż | Galerie | "Twórczość" || Free Image Hosting

Offline

 

#5  2010-05-22 18:27:57

  pyrion - Użytkownik

pyrion
Użytkownik
Zarejestrowany: 2005-10-14

Re: Zabezpieczenie skryptu

Wykorzystaj instrukcję case zamiast if.

Ostatnio edytowany przez pyrion (2010-05-22 18:28:33)

Offline

 

#6  2010-05-22 19:05:49

  buli - Użytkownik

buli
Użytkownik
Skąd: Człuchów
Zarejestrowany: 2006-04-30

Re: Zabezpieczenie skryptu

jak bym chciał użyć case to bym go użył.. :)
Mogę prosić o przykład o co chodzi z tymi nawiasami?
Bo coś tam próbowałem i chyba nie do końca kumam..


blehh :F

Offline

 

#7  2010-05-22 19:20:59

  winnetou - złodziej wirków ]:->

winnetou
złodziej wirków ]:->
Skąd: Jasło/Rzeszów kiedyś Gdańs
Zarejestrowany: 2008-03-31
Serwis

Re: Zabezpieczenie skryptu

Kod:

echo "Czy włączyć logowanie zdarzeń? (T/N):";
read LOG;
if [[ "$LOG" ]]
    then
    while [[ "$LOG" != "T" ]] && [[ "$LOG" != "N" ]] && [[ "$LOG" = '' ]]
    do
        echo "Czy włączyć logowanie zdarzeń? (T/N):";
        read LOG;
    done
fi

Nie jestem pewien dlaczego tak to działa ale u mnie też czasami skrypty się nie chcą uruchomić jak dam warunek w pojedynczym cudzysłowie nawiasie. Ponadto zmienne weź w cudzysłów

Ostatnio edytowany przez winnetou (2010-05-22 19:36:13)


LRU: #472938
napisz do mnie: ola@mojmail.eu
Hołmpejdż | Galerie | "Twórczość" || Free Image Hosting

Offline

 

#8  2010-05-22 19:30:34

  azhag - Admin łajza

azhag
Admin łajza
Skąd: Warszawa
Zarejestrowany: 2005-11-15

Re: Zabezpieczenie skryptu

lepiej ustaw domyślny $LOG jeśli pusty:

Kod:

LOG=${LOG:-N}

to oznacza: $LOG = $LOG lub, jeśli ta zmienna jest pusta, "N".

Podwójne nawiasy kwadratowe to bashyzm.


Błogosławieni, którzy czynią FAQ.
opencaching :: debian sources.list :: coś jakby blog :: polski portal debiana :: linux user #403712

Offline

 

#9  2010-05-22 20:03:56

  buli - Użytkownik

buli
Użytkownik
Skąd: Człuchów
Zarejestrowany: 2006-04-30

Re: Zabezpieczenie skryptu

dodatkowo nie pomagaja..
azhag, co oznacza taki zapis w klamrach..?
w stosunku do głupiego LOG='N'

Ostatnio edytowany przez buli (2010-05-22 20:05:43)


blehh :F

Offline

 

#10  2010-05-22 20:29:15

  azhag - Admin łajza

azhag
Admin łajza
Skąd: Warszawa
Zarejestrowany: 2005-11-15

Re: Zabezpieczenie skryptu

Kod:

LOG='N'

zawsze ustawia N jako $LOG

Moje robi to co napisałem.

Porównaj:

Kod:

echo $FOO
BAR=${FOO:-domyślne}
echo $BAR
FOO=foo
BAR=${FOO:-domyślne}
echo $BAR

Błogosławieni, którzy czynią FAQ.
opencaching :: debian sources.list :: coś jakby blog :: polski portal debiana :: linux user #403712

Offline

 

#11  2010-05-23 02:26:15

  buli - Użytkownik

buli
Użytkownik
Skąd: Człuchów
Zarejestrowany: 2006-04-30

Re: Zabezpieczenie skryptu

A no kumam już. Ale mimo wszystko zwraca błąd w przypadku pustej zmiennej..

./small_1: line 44: [: =: unary operator expected
./small_1: line 54: [: =: unary operator expected

Problem byl w tym ze
domyslna zmienna musiala pojawic sie po

Kod:

if [ $LOG ]
    then
    while [ ! $LOG = "T" ] && [ ! $LOG = "N" ]
    do
        echo "Czy włączyć logowanie zdarzeń? (T/N):";
        read LOG;
    done
fi

Ostatnio edytowany przez buli (2010-05-23 02:53:10)


blehh :F

Offline

 

#12  2010-05-23 07:59:48

  winnetou - złodziej wirków ]:->

winnetou
złodziej wirków ]:->
Skąd: Jasło/Rzeszów kiedyś Gdańs
Zarejestrowany: 2008-03-31
Serwis

Re: Zabezpieczenie skryptu

A spróbuj tak:

Kod:

while [ "$LOG" != "T" ] && [ "$LOG" != "N" ]

A najlepiej przedstaw większy kawałek skryptu z linijkami 44 i 54  ;))


LRU: #472938
napisz do mnie: ola@mojmail.eu
Hołmpejdż | Galerie | "Twórczość" || Free Image Hosting

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
Możesz wyłączyć AdBlock — tu nie ma reklam ;-)