Rechenfehler?? - meinerseits -

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
Baldrian
Beiträge: 290
Registriert: 13.05.2004 16:22:39

Rechenfehler?? - meinerseits -

Beitrag von Baldrian » 29.12.2006 21:35:57

Ich bin etwas verwirrt.
Ich möchte das sich der Wert von i im laufe des Scripts immer um zehn erhöht, bis ein wehrt von 100 erreicht wurde, aber irgendwie schein ich zu blöd zu sein, obwohl es so einfach sein sollte.
der entsprchende Schnipsel aus dem Script:

Code: Alles auswählen

i=10
while ((i <= 100))
do
	 i=$(( i+10 ))
done
Problem:
Dabei kommt 110 raus und nicht 20 wie es vorgesehen war.
was ist falsch daran?
Eigentlich sollte die Schleife doch so lange i um 10 größer machen, bis i 100 erreicht hat.

Hm, ich wäre für hilfe dankbar, komm mir mittlerweile schon vollkommen blöd vor, weil ich an diesen dummen fünf Zeilen Hänge und das Problem nicht sehe.
"Was auch immer geschieht, nie dürft ihr so tief sinken,
von dem Kakao, durch den man euch zieht, auch noch zu trinken."

Spasswolf
Beiträge: 3472
Registriert: 30.11.2005 10:32:22
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Wald

Beitrag von Spasswolf » 29.12.2006 21:45:14

Erst wird geprüft ob i<=100 ist, dann wird 10 addiert, d.h. wenn i=100 ist wird nochmal 10 addiert.
Dabei kommt 110 raus und nicht 20 wie es vorgesehen war.
:?:
1000

nepos
Beiträge: 5238
Registriert: 05.01.2005 10:08:12

Beitrag von nepos » 31.12.2006 02:36:24

Wie soll da jemals 20 rauskommen?
Ansonsten hat Spasswolf ja schon gesagt, woran es liegt.

JPT
Beiträge: 96
Registriert: 09.03.2006 17:46:20
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von JPT » 31.12.2006 16:06:33

*verwirrt bin*

Also: Szenario des ersten Durchlaufs:

Code: Alles auswählen

i=10 
while ((i <= 100)) 
do                        #Bis hier ist i noch 10.
    i=$(( i+10 ))     #Hier ist i dann 20. und das bis die Schleife wieder hier eingetroffen ist.
done 
Also kommt zwischendurch auch mal 20 heraus.

flash78
Beiträge: 32
Registriert: 22.05.2005 14:11:28

Beitrag von flash78 » 31.12.2006 16:28:29

Um das Problem zu sehen, ist meist ein

Code: Alles auswählen

set -x
ganz hilfreich.

Antworten