Nowe posty

Autor Wątek: Niedokońca działający skrypt.  (Przeczytany 9084 razy)

gruta

  • Gość
Niedokońca działający skrypt.
« dnia: 2007-07-06, 19:45:47 »
Witam.Jestem raczej początkującym użytkownikiem.Napisałem w bashu (prostacki) skrypt który wykonuje działania arytmetyczne.jednak nie wiem jak zrobić żeby działała zawarta w nim funcja.Jeśli ktoś może pomóc to z góry dziękuję.Oto kod:

#!/bin/bash
function jak
{
if [$first -lt $second ]
then
echo "pierwsza musi byc wieksza od drugiej"
else
echo $[$first/$second]
fi
}
echo -n "Type first digit: "
read first
echo -n "Type second digit: "
read second
echo "Jakie działanie matematyczne chcesz wykonać?Wpisz odpowiedni numer w menu"
select menu in mnożenie dzielenie dodawanie odejmowanie
do
case $menu in
"mnożenie") echo $[$second*$first] ;;
"dzielenie") jak ;;
"dodawanie") echo $[$first+$second] ;;
"odejmowanie") echo $[$first-$second];;
*) echo "Zrobiłeś/aś jakiś błąd..."
esac
break
done

arctgx

  • Gość
Niedokońca działający skrypt.
« Odpowiedź #1 dnia: 2007-07-06, 19:55:49 »
Nie mam czasu, by analizować resztę skryptu, ale w samej definicji funkcji masz już błąd: brakuje Ci pary nawiasów () po nazwie funkcji, czyli po "jak". Chyba nieuważnie czytasz manual basha (a po polsku nawet przecie jest). Przy wywołaniu funkcji jej parametry przekazujesz jak ogólnie w skryptach - po jej nazwie, oddzielone białym znakiem, a w definicji pobierasz je w zmiennych $1, $2 itd, czyli też jak w skryptach. Więcej doczytaj w manualu lub przyjrzyj się gotowym rozwiązaniom w necie lub w systemowych skryptach.

de_laurent

  • Gość
Niedokońca działający skrypt.
« Odpowiedź #2 dnia: 2007-07-06, 20:33:09 »
2007-07-06 19:45:47 gruta napisał:

> Witam.Jestem raczej początkującym użytkownikiem.Napisałem w bashu (prostacki) skrypt który
 > wykonuje działania arytmetyczne.jednak nie wiem jak zrobić żeby działała zawarta w nim
 > funcja.Jeśli ktoś może pomóc to z góry dziękuję.Oto kod:
 >
 > #!/bin/bash
 > function jak
 > {
 > if [$first -lt $second ]
 > then
 > echo "pierwsza musi byc wieksza od drugiej"
 > else
 > echo $[$first/$second]
 > fi
 > }
 > echo -n "Type first digit: "
 > read first
 > echo -n "Type second digit: "
 > read second
 > echo "Jakie działanie matematyczne chcesz wykonać?Wpisz odpowiedni numer w menu"
 > select menu in mnożenie dzielenie dodawanie odejmowanie
 > do
 > case $menu in
 > "mnożenie") echo $[$second*$first] ;;
 > "dzielenie") jak ;;
 > "dodawanie") echo $[$first+$second] ;;
 > "odejmowanie") echo $[$first-$second];;
 > *) echo "Zrobiłeś/aś jakiś błąd..."
 > esac
 > break
 > done
 >

Wstaw spacje zaraz po pierwszym nawiasie kwadratowym: if [$first -lt $second ]
if [ $first -lt $second ]

I zapamietaj, ze w bashu przy komendzie if zawsze musi byc spacja zarowno po otwierajacym nawiasie kwadratowym jak i przed zamykajacym nawiasem kwadratowym. :)

Bash umozliwia przyjemny trik. Wstaw na poczatku sktypu, ale po sha-bang czyli #!/bin/bash komende set -x i uruchom twoj skrypt.

Pozdrowiam

arctgx

  • Gość
Niedokońca działający skrypt.
« Odpowiedź #3 dnia: 2007-07-06, 21:00:58 »
Słowo "function" nie jest wymagane przy deklaracji (patrz man bash)

gruta

  • Gość
Niedokońca działający skrypt.
« Odpowiedź #4 dnia: 2007-07-06, 21:09:00 »
Dzięki bardzo za podpowiedź. A już się załamałem:)