2007-03-25 11:25:03 adruś napisał:
> ok, zrozumiałem. Jestem z basha kompletnie zielony, poczytałem więc troszkę podstaw i skleiłem
> taki oto skrypt:
>
> #!/bin/bash
>
> echo "Skrypt obliczajacy wartosc wyrazenia 1-2+3-4+5-6+...+99-100"
>
> liczba1=1;
> liczba2=2;
> wynik=0;
>
> while [ liczba2 -le 100 ]; do
> wynik=$[wynik + liczba1 - liczba2]
> liczba1=$[liczba1 + 2]
> liczba2=$[liczba2 + 2]
>
> done
>
> echo "Wartosc tego wyrazenia wynosi: $wynik"
>
> Czy ma to sens i ma prawo zadziałać? Jeśli nie, to proszę o podpowiedź.
>
Już lepiej
![Smiley :)](http://forum.linux.pl/Smileys/default/smiley.gif)
Zainteresuj się poleceniem let:
liczba_1=1
liczba_2=4
let wynik=$liczba_1+$liczba_2
maciek@rutek:~/tmp$ echo $wynik
5
przy let... nie może być spacji przy znaku równości.
Masz skrypt, ale musisz z niego wywalić parę nadmiarowych zmiennych i operacji. Taka praca domowa:
#!/bin/sh
liczba=1
wynik=0
temp=1
limit=50
while [ $temp -le $limit ]
do
let liczba2=2*liczba
let wynik=$[wynik + liczba - liczba2]
let temp=$liczba+1
let liczba=$temp
done
echo $wynik
IMO wystarczy zliczanie do 50.
--
Maciek
PS. Co do drugiego problemu, to parametrem przekazywanym jako argument będzie wartość $1 musisz sprawdzić czy $1 będzie z wymaganego zakresu.