PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Schleifen im Schell-Script



netlinker
22-02-2002, 12:48
Hallo,

ich versuche ein Script zu schreiben in dem eine Schleife x mal bestimmte Ausgaben macht:
Sollte ungefähr so aussenen:

snipp-------------------
i=1
echo -n "Bitte Anzahl der Wiederholungen eingeben:
read wieder

for $i <= wieder; do
echo ausage[$1]
i=$i+1

Weiss halt nur nicht wie nen Schleife unter Shell auszusehen hat :rolleyes: .
Ne while-Schleife geht auch.

Schon mal Thanks,
bye Björn

dj-submerge
22-02-2002, 13:02
Hatt egestern gerade meine script einfuehrung :)

Dies waere eine moeglichkeit, per until schlaufe... hier hat es sonst Beispiele -> http://www.lugbe.ch/action/reports/shell.phtml

#!/bin/bash

getval() {
VAR=""
while [ "$VAR" = "" ]
do
echo -n "Enter $1 value: "
read VAR
done
eval $1=$VAR # process $1, then re-evaluate the rest ($VAR) and assign it to ($1)
}

getval "Repeat"
TMP="1"
until [ $TMP -gt $Repeat ]
do
echo -n "$TMP "
TMP=`expr $TMP + 1`

done

geronet
22-02-2002, 13:36
Ähem so wärs richtig:





snipp-------------------


#!/bin/sh

ausage="irgendwas"

i=1
echo -n "Bitte Anzahl der Wiederholungen eingeben:"
read wieder

for ((; i < wieder; i=$[$i+1])); do
echo $ausage [$1]
done

Grüsse, Stefan

deac
22-02-2002, 21:37
Häää?
Ich würde sagen, dass alle falsch sind. Mit for eine Zählerschleife? Das ist mir sehr neu.
Besonders das letzte Script ist das Letzte.

Hier ein kleines, recht kleines Script, mit allen Rafinessen:


echo -n "Bitte Anzahl der Wiederholungen eingeben: "
read wieder
while
i=$[${i:=-1}+1]
[ $i -lt $wieder ]
do
echo ${ausgabe[$i]}
done

geronet
22-02-2002, 21:58
Mit for eine Zählerschleife? Das ist mir sehr neu.

Mit was denn sonst eine Schleife? while/do und for ist in Assembler eh fast das gleiche oder kennst du kein Assembler?


Ausserdem ist mein script nicht falsch ich hab es selbst getestet.
nix für ungut aber Hauptsache es geht.. :)

netlinker
23-02-2002, 04:00
Hallo,

ich hab jetzt die for-Schleife benutzt und es klappt gut. Schon mal danke an alle für eure schnellen Antworten :D

Aber ich hätte noch eine frage, und zwar würd ich gern eine ip einlesen (read ip) und diese würd ich dann gern anhand der Punkte in 4 Variab. trennen (a.b.c.d).

Bye & thx Björn

geronet
23-02-2002, 08:20
Null Problemo, die IP Einlesen und teilen ist einfach:



#!/bin/sh

echo "Bitte IP-Adresse eingeben:"
read LOCAL_IP


echo "IP Adresse ist $LOCAL_IP"



a=$(echo "$LOCAL_IP" | awk -F "." ' { print $1 } ')

b=$(echo "$LOCAL_IP" | awk -F "." ' { print $2 } ')

c=$(echo "$LOCAL_IP" | awk -F "." ' { print $3 } ')

d=$(echo "$LOCAL_IP" | awk -F "." ' { print $4 } ')



echo "oder $a, $b, $c, $d"



exit 0



Grüsse, Stefan

netlinker
23-02-2002, 17:30
Danke für die Hilfe,

jetzt hab ich alles was ich brauche.

Bye Björn

deac
23-02-2002, 21:31
Original geschrieben von geronet
Mit was denn sonst eine Schleife? while/do und for ist in Assembler eh fast das gleiche oder kennst du kein Assembler?

Ausserdem ist mein script nicht falsch ich hab es selbst getestet.
nix für ungut aber Hauptsache es geht.. :)
Wir sind hier in Script-Sprachen, nicht in Assembly.
Dort wird for als Zählerschleife benutzt, doch nicht in einem Script. for wird hier eher als Listenschleife verwendet.

SeeksTheMoon
25-02-2002, 18:48
schaut mal in die manpage der bash, da stehen all solche sachen drin. z.B. dieses hier:

while list; do list; done
until list; do list; done

ansonsten kann ich auf www.linuxdoc.org den advanced bash scripting guide empfehlen: http://www.linuxdoc.org/LDP/abs/html/index.html
gibts dort auch zum Download.