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
Ä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
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
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
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
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.
Powered by vBulletin® Version 4.2.5 Copyright ©2025 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.