PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Basisfragen: Shell-Skripts



keyboard
08.04.12, 10:05
Hallo, Forum!

Ich mache gerade meine ersten Schritte Richtung Shell-Scripts und habe ein paar Fragen:

>> Der Befehl
echo "A" soll 200 mal wiederholt werden. Nach 100 Mal wiederholen soll
echo "B" ausgegeben werden (allerdings während die Schleife noch läuft). Wie wiederhole ich also diese Befehle in einem Shell-Script und wie lasse ich nach 100 mal den anderen Befehl ausgeben?


A
A
A
A
...
A
B
A
B
...

>> Wie addiere ich zur Variable "x" 1 dazu?

Lg, keyboard

L00NIX
08.04.12, 10:41
Hausaufgaben über Ostern? ;)

Rechnen in der Shell (sh) geht mit $[ ... ] oder (bash) $(( ... ))

Mit "if [ ... ] ; then ... ; fi" (einfachster Fall) kannst du eine Bedingung abfragen und verzweigen.

Für Schleifen gibt es z.B. "for (( a ; b ; c )) ; do ... ; done", wobei a nur beim Einsprung in die Schleife abgearbeitet wird (Zähler initialisieren), b die Abbruchbedingung ist und c nach jedem Durchlauf ausgeführt wird (Zähler erhöhen).

Hier mal ein Beispiel zu for (bash):


$ for (( i=0 ; i<5; i++ )) ; do echo $i ; done
0
1
2
3
4
$


Gruß
L00NIX

tomm.fa
08.04.12, 10:47
Normalerweise verknüpft man sein Thema in den verschiedenen Foren untereinander. Holst du das noch nach?

Edit: Anscheinend nicht (http://www.unixboard.de/vb3/showthread.php?49405-Basisfragen-Shell-Skripts).

keyboard
08.04.12, 11:58
Hausaufgaben über Ostern? ;)

Rechnen in der Shell (sh) geht mit $[ ... ] oder (bash) $(( ... ))

Mit "if [ ... ] ; then ... ; fi" (einfachster Fall) kannst du eine Bedingung abfragen und verzweigen.

Für Schleifen gibt es z.B. "for (( a ; b ; c )) ; do ... ; done", wobei a nur beim Einsprung in die Schleife abgearbeitet wird (Zähler initialisieren), b die Abbruchbedingung ist und c nach jedem Durchlauf ausgeführt wird (Zähler erhöhen).

Hier mal ein Beispiel zu for (bash):


$ for (( i=0 ; i<5; i++ )) ; do echo $i ; done
0
1
2
3
4
$


Gruß
L00NIX

So ausführlich wollte ich das jetzt gar nicht. Um es konkreter zu sagen:


for a in {1..200}
do
echo "Hello"
done

Er schreibt Hello aber nur einmal hin und nicht 200mal. Das meinte ich eigentlich. Ich bin ganz brav und erledige alle meine Hausaufgaben mit dem altmodischen Taschenrechner :-)

Ich finde nur den Fehler nicht...

Lg, keyboard

undefined
08.04.12, 12:48
Lese die Dokumentation zum Thema Expandierung und Builtin Kommandos

http://www-user.tu-chemnitz.de/~hot/unix_linux_werkzeugkasten/bash.html

keyboard
08.04.12, 13:14
Danke! Ich habe jetzt das seq Kommando als Alternative gefunden und das funktioniert super und arbeitet auch gut mit if zusammen - alles was ich brauche.

Danke für den Link auf die Dokumentation!
Danke auch an L00NIX.

lg, keyboard