Strona Główna Unixy.pl
Internetowe forum na temat systemów GNU/Linux Unix

FAQFAQ  SzukajSzukaj  UżytkownicyUżytkownicy  GrupyGrupy  StatystykiStatystyki
RejestracjaRejestracja  ZalogujZaloguj  DownloadDownload
 Ogłoszenie 
Strona korzysta z plików cookies w celu realizacji usług (logowanie do konta itp.). Możesz określić warunki przechowywania lub dostępu do plików cookies w Twojej przeglądarce.

Poprzedni temat «» Następny temat
prosty skrypt while
Autor Wiadomość
horadric

Dołączył: 28 Mar 2010
Posty: 5
  Wysłany: 2010-03-28, 13:55   prosty skrypt while

witam,
mam taki problem z prostym skryptem zawierającym pętlę while, nie bardzo jeszcze chyba ogarniam całą składnię skryptów unixowych i być może stąd moje kłopoty, zatem do rzeczy.
moja pętla wygląda następująco:


Kod:

#!/bin/sh
read p1
read p2

while [ $p1 -ne $p2 ]
   do
   p1 = `expr $p1 + 1 `

echo $p1
done


jak na mój gust pętla powinna działać poprawnie, wczytuje dwa parametry, póki pierwszy jest różny od drugiego wykonuj zwiększanie pierwszego parametru o 1 i wypisuj. pomijam tu już założenia związane z tym, że p1 musi być większe niż p2, chodzi mi tylko o sens tej pętli. po wykonaniu programu, wpisaniu liczb np 3 i 6, pętla działa w nieskończoność z napisem p1: not found 3

czy ktoś móglby mi coś doradzić?
 
     
Maciek_Rutecki 
Administrator

JID: bc547@jabber.gda.pl
Pomógł: 39 razy
Dołączył: 07 Cze 2005
Posty: 2959
Wysłany: 2010-03-28, 14:33   

Kod:
#!/bin/sh
read p1
read p2

while [ $p1 -ne $p2 ]
   do
   let p1++

echo $p1
done


Poczytaj sobie tutaj:
http://www.softpanorama.o...pressions.shtml
_________________
Maciek
http://www.maciek.unixy.pl
 
     
horadric

Dołączył: 28 Mar 2010
Posty: 5
Wysłany: 2010-03-28, 17:40   

przejrzałem co nieco źródeł i to co mi podesłałeś, zmieniłem swój kod, ale błąd wyskakuje dalej wraz z zapętleniem. może problem tkwi w spacjach? ;/
 
     
Maciek_Rutecki 
Administrator

JID: bc547@jabber.gda.pl
Pomógł: 39 razy
Dołączył: 07 Cze 2005
Posty: 2959
Wysłany: 2010-03-28, 20:22   

Mój kod nie dziala poprawnie?

Kod:
U mnie wykonuje coś takiego:
maciek@gumis:~/temp$ ./xxx.sh
1
4
2
3
4


Daje na wejście 1 i 4 i w pętli pierwszą zmienną zwiększa o 1 aż do wyrównania się liczb. Czyli z Twojego opisu tak ma działać.
_________________
Maciek
http://www.maciek.unixy.pl
 
     
horadric

Dołączył: 28 Mar 2010
Posty: 5
Wysłany: 2010-03-29, 02:42   

hmm nie rozumiem...
przepisałem znak w znak i coś dziwnego się tu dzieje. czy może to być np sprawa putty albo no nie wiem sam czego?
zamieszczam zdjęcia jako dowód:


i wykonanie:
 
     
scool 

JID: scool@jabberpl.org
Pomógł: 1 raz
Dołączył: 15 Lis 2005
Posty: 409
Wysłany: 2010-03-29, 05:40   

Maćku: czyżby horadric nie miał dostępu do let?
_________________
Każdy Polak oczywista, dba by w domu była Vista... Windows Seven always even :P

Co to jest KDE?? kde to po czesku "gdzie".

"...Z ręki obcej; źródła jego dawne serwery,
A numer jego będzie... 404."
 
     
Maciek_Rutecki 
Administrator

JID: bc547@jabber.gda.pl
Pomógł: 39 razy
Dołączył: 07 Cze 2005
Posty: 2959
Wysłany: 2010-03-29, 06:58   

scool napisał/a:
Maćku: czyżby horadric nie miał dostępu do let?


Najwyraźniej.

Czy:
Kod:
p1=$((p1 + 1 ))


nie działa?
_________________
Maciek
http://www.maciek.unixy.pl
 
     
horadric

Dołączył: 28 Mar 2010
Posty: 5
Wysłany: 2010-03-29, 12:25   

syntax error at line 9: `p1=$' unexpected
postawilem spację po '=' to wyskoczył podobny błąd tyleże unexpected był '('

czy aby napewno #!/bin/sh ten nagłówek tu działa? ;/
 
     
scool 

JID: scool@jabberpl.org
Pomógł: 1 raz
Dołączył: 15 Lis 2005
Posty: 409
Wysłany: 2010-03-29, 21:28   

jakiś okrojony ten shell? A jak zamienisz sh na basha?
_________________
Każdy Polak oczywista, dba by w domu była Vista... Windows Seven always even :P

Co to jest KDE?? kde to po czesku "gdzie".

"...Z ręki obcej; źródła jego dawne serwery,
A numer jego będzie... 404."
 
     
horadric

Dołączył: 28 Mar 2010
Posty: 5
Wysłany: 2010-03-29, 21:38   

a to ciekawe, na bashu działa zarówno let p1++ jak i poprzedni zapis ;)
zatem wydaję się, że problem rozwiązany, dzięki Chłopaki za pomoc :)
 
     
scool 

JID: scool@jabberpl.org
Pomógł: 1 raz
Dołączył: 15 Lis 2005
Posty: 409
Wysłany: 2010-03-29, 21:51   

Pewnie masz jakąś starą wersję shella, czy coś (ew. domyślny shell tak naprawdę wskazuje na Bóg wie co) :) Bash co prawda nie jest rozwiązaniem, ale dobrze obchodzi problem :)
_________________
Każdy Polak oczywista, dba by w domu była Vista... Windows Seven always even :P

Co to jest KDE?? kde to po czesku "gdzie".

"...Z ręki obcej; źródła jego dawne serwery,
A numer jego będzie... 404."
 
     
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group