Strona 1 z 1

pierwsze problemy podczas programowania

: 10 sty 2012, 19:15
autor: has
Pierwszy raz obcuje z linuxem i zaczynam pisac proste programy problem powstaje taki ze po napisaniu programu o kodzie
clear
echo " czy jest ranek "
read poradnia
if [ $ poradnia = "tak" ]
then
echo "dzien dobry"
else
echo " idz spac"
fi
exit 0

nadaje tryb wykonywalności dla tego pliku, wpisuje w terminalu nazwe pliku nie dziala i pojawia sie komunikat

Nie odnaleziono polecenia 'plik', czy miałaś/miałeś na myśli:
Polecenie 'plink' z pakietu 'putty-tools' (universe)
Polecenie 'plio' z pakietu 'gnustep-base-runtime' (universe)
plik: nie znaleziono polecenia


a jak normalnie klikam na plik znajdujacy sie na pulpicie to jest brak jakiejkolwiek reakcji.

Re: problem

: 10 sty 2012, 19:20
autor: kabanek
ja za to dostawałem błąd:
czy jest ranek
tak
./poradnia.sh: line 4: [: za dużo argumentów
idz spac
zmieniłem na

Kod: Zaznacz cały

clear
echo " czy jest ranek "
read poradnia
if [ $poradnia = "tak" ]
then
echo "dzien dobry"
else
echo " idz spac"
fi
exit 0
wpisuje w konsolę ./poranek.sh
i jest bez błędu

a co chcesz żeby robił, gdy wpiszesz tak lub nie?
zauważ, że jeszcze na samym końcu dałeś

Kod: Zaznacz cały

exit 0
co chyba jednoznacznie "mówi" bash'owi co ma zrobić, gdy warunek się skończy

Re: problem

: 10 sty 2012, 19:26
autor: has
jak wpisuje tak to powinno wyswietlic sie dzien dobry, jesli inne wyrazenie to idz spac

-- 10 sty 2012, o 19:38 --

juz pomalu ogarniam ale problem pojawia sie innej natury mianowicie
clear
echo " czy jest ranek "
read poradnia
if [ $ poradnia = "tak" ]
then
echo "dzien dobry"
elif [ $ poradnia = "nie"]
else
echo " idz spac "
fi
exit 0

po uruchomieniu podaje mi taki komunikat

darek@Sempron:~/Pulpit$ ./plik
czy jest ranek
tak
./plik: line 8: błąd składni przy nieoczekiwanym znaczniku `else'
./plik: line 8: `else '

Re: problem

: 10 sty 2012, 20:41
autor: kampo
Napisałem działający skrypt, zobacz sobie, co masz źle:

Kod: Zaznacz cały

#!/bin/bash
echo "Czy jest poranek?"
read zmienna

if [ $zmienna == "tak" ]; then
    echo "Witam"
else
    echo "Do spania"
fi
Zauważ, że przy każdym tescie po '[' jak i przed ']' MUSI być spacja.

Edit:

Kod: Zaznacz cały

elif [ $ poradnia = "nie"]
To jest chyba Twój błąd.

Edit 2:
Jeszcze jedno. Po wyrażeniu 'elif' także musi byc 'then'. I nie możesz pisać zmiennych ze spacją po dolarze.

Pozdrawiam.

Re: problem

: 10 sty 2012, 21:19
autor: has
wiem ale kod mam poprawny

Kod: Zaznacz cały

clear
echo " czy jest ranek "
read poradnia
if [ $poradnia = "tak" ]
then
echo "dzien dobry"
elif [ $poradnia = "nie" ]
else
echo " idz spac "
fi
exit 0
z tym ze pojawia mi sie taki komunikat a do konca nie wiem co on oznacza

Kod: Zaznacz cały

 
./plik: line 8: błąd składni przy nieoczekiwanym znaczniku `else'
./plik: line 8: `else'

Re: problem

: 10 sty 2012, 21:57
autor: k2cl
Zmień tytuł tematu tak, aby w sposób możliwie precyzyjny przedstawiał sedno sprawy, w której piszesz. Miej na uwadze również zgodność z REGULAMINEM
Tytuł tematu zmienisz edytując pierwszy post
W razie wątpliwości/zastrzeżeń odnośnie powyższej informacji skontaktuj się z moderatorem, który ją wstawił.

Re: pierwsze problemy podczas programowania

: 11 sty 2012, 17:27
autor: kampo
1. Po 'elif' nie masz 'then',
2. Po 'elif' nie ma żadnego kodu, a musi być,
3. Przy porównaniach używaj 2 znaków, tzn. zamiast '=' wpisz '=='. W Bashu niby działa, ale w innych językach już nie będzie tak ładnie.

Tak powinno to wyglądać:

Kod: Zaznacz cały

echo " czy jest ranek "
read poradnia
if [ $poradnia == "tak" ]
then
    echo "dzien dobry"
elif [ $poradnia == "nie" ]
then
    echo "idz spac"
else
    echo "nie rozumiem"
fi
exit 0

Re: pierwsze problemy podczas programowania

: 11 sty 2012, 19:10
autor: k2cl
Podejście kolejne:

Zmień tytuł tematu na zgodny z REGULAMINEM
Zwróć uwagę głównie na słowa, których używasz
Tytuł tematu zmienisz edytując pierwszy post
W razie wątpliwości/zastrzeżeń odnośnie powyższej informacji skontaktuj się z moderatorem, który ją wstawił.