PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : die for schleife und die Bash



opino
05.11.2006, 15:29
hallo,

ich möchte/muss in die Shellprogramierng einsteigen. Ich kann C und ähnliche
Programmiersprachen. In meinem Buch steht das Script-Sprachen leicht zu erlernen
sind, aber bei mir ist es genau das Gegenteil, ich bin die ganze Zeit am rumfluchen,

das was mir absolut nicht in den Kopf rein will ist die for Schleife:

for i in a b c; do echi $i; done

das ist ja alles schön und gut, wenn ich es ausführe klappt es auch aber ich habe
absolut keinen blassen schimmer wie ich zum Beispiel 3 mal eine echo Anweisung
ausführen kann. Was bedeutet dieses i in?

Lumpi
05.11.2006, 15:42
for i in a b c; do echi $i; done
Wenn das klappt fress ich einen Besen ;)

Dein code sollte etwa so aussehen
#!/bin/bash
for i in {a..f};
do echo $i;
done
Damit durchläuft die Schleife den Wert "i"so lange bis deren
Ende (hier "f") erreicht ist.
Der Einzeiler wäre halt
for i in {a..f};do echo $i;done

Gruß Lumpi

opino
05.11.2006, 15:48
danke für die schnelle Antwort.

Ich habe mitlerweile rausgefunden das ich für meine zwecke eine while schleife nehme.
Aber nun habe ich ein weiteres Problem. Hier erstmal mein code:

1 a= # a wird gelöschet
2 while [ -z "$a" ]; do
3 echo -n "Wieviele Wert wollen Sie eingeben?"
4 read a
5 a=${a##*[^0-9,'',-]*}
6 if [ -z "$a" ]; then
7 echo "ungültige eingabe"
8 fi
9 done
10
11
12 i=1;
13 while [ $i -le $a ]; do
14 echo $i;
15 i=$[$i+1];
16 done
17
18
19
20 echo $a


ich will quasi mir tabellen basteln die ich mit gnuplot zeichen will.
Das Programm soll mich zuerst fragen wieviele x werte ich ihm geben will und dann
die entprechenden y werte einlesen. ganz zum schluss soll es den x wert tabulatorzeichen und y wert ausgeben.

Mit den Xwerten bin ich nun schon soweit aber wie würde das mit den y-werten gehen?

Xanti
05.11.2006, 16:06
danke für die schnelle Antwort.

Ich habe mitlerweile rausgefunden das ich für meine zwecke eine while schleife nehme.
Aber nun habe ich ein weiteres Problem. Hier erstmal mein code:

...

ich will quasi mir tabellen basteln die ich mit gnuplot zeichen will.
Das Programm soll mich zuerst fragen wieviele x werte ich ihm geben will und dann
die entprechenden y werte einlesen. ganz zum schluss soll es den x wert tabulatorzeichen und y wert ausgeben.

Mit den Xwerten bin ich nun schon soweit aber wie würde das mit den y-werten gehen?

Für Deinen Zweck geht auch



for ((i=1; i<=3; i++)); do ...; done


und wenn ich Deine Aufgabenstellung richtig verstehe, hilft Dir vielleicht folgendes:



...
unset s
for ((i=1; i<=a; i++)); do
read -p "x=" x
read -p "y=" y
s="$s$x\t$y\n"
done
printf "$s"


Gruss, Xanti