Servus zusammen.
Disclaimer vorweg, das Problem an sich ist schon gelöst bzw. umgangen, mich interessiert nur, ob/wie das Ganze vielleicht doch mit einer "for"-Anweisung geht.
In einem kleinen Shellscript (bash), wird der Nutzer nach einer Zahl gefragt, wie oft das Script eine bestimmte Berechnung durchführen soll. Danach soll mit dieser (Ganz)zahl eben genau so oft eine Anweisung durchlaufen werden und das wollte ums Verrecken nicht mit der naheliegenden Idee einer for-Anweisung durchlaufen.
Hier etwas Pseudocode (der eigentliche Code im Script ist hier irrelevant, deshalb ein einfaches "echo"), der das Problem zeigen soll:
ergibt das erwartete Ergebnis.
Und nun kommt der große Pferdefuss:
Wie man sieht, wird nicht durchgezählt, weil die Shell offensichtlich die Variable "ANZAHL" nicht als Ganzzahl (Integer), sondern als String auswertet.
Wer eine Idee/Erklärung hat, immer her damit, aber vorher noch für Querleser die Art und Weise, wie ich das Problem gelöst/umgangen habe, auch wieder als Pseudocode:
Greetz,
RM
Disclaimer vorweg, das Problem an sich ist schon gelöst bzw. umgangen, mich interessiert nur, ob/wie das Ganze vielleicht doch mit einer "for"-Anweisung geht.
In einem kleinen Shellscript (bash), wird der Nutzer nach einer Zahl gefragt, wie oft das Script eine bestimmte Berechnung durchführen soll. Danach soll mit dieser (Ganz)zahl eben genau so oft eine Anweisung durchlaufen werden und das wollte ums Verrecken nicht mit der naheliegenden Idee einer for-Anweisung durchlaufen.
Hier etwas Pseudocode (der eigentliche Code im Script ist hier irrelevant, deshalb ein einfaches "echo"), der das Problem zeigen soll:
Code:
for i in {0..10} ; do echo $i ; done
Code:
for i in {0..10} ; do echo $i ; done
0
1
2
3
4
5
6
7
8
9
10
Code:
read ANZAHL
10
for i in {0..$ANZAHL} ; do echo $i ; done
{0..10}
Wer eine Idee/Erklärung hat, immer her damit, aber vorher noch für Querleser die Art und Weise, wie ich das Problem gelöst/umgangen habe, auch wieder als Pseudocode:
Code:
#!/bin/bash
echo -e "Anzahl angeben"
read ANZAHL
while [[ $ANZAHL -gt 0 ]] ; do
echo $ANZAHL
ANZAHL=$(expr $ANZAHL - 1)
done
exit 0
RM