Linux Shell (for Schleife)

wpb

Erfahrenes Mitglied
Hy!!

Wie schreibt man eine einfache Zählschleife (1-10) in der Linux Shell

Danke schon mal...
 
Hi,
in der Shell mußt du hierfür eine while Schleife benutzen, oder aber in der for Anweisung eine expliziete Liste 1 2 3 4 5... angeben:

Bash:
for i in 1 2 3 4; do
  echo $i
done

Hatte auch etwas gelesen, dass ab bash xy eine for schleife im c++ Stil unterstützt wird, diese dann jedoch nicht abwärts kompatibel ist.

Gruß Mindwinder
 
Zuletzt bearbeitet:
hallo,
Wenn du zum Beispiel eine Bash benutzt, dann geht auch:
Bash:
i=1
unitl [ $i -gt 5 ]
do
echo $i
i=$[$i+1]
done

gruß
thekorn
 
Hi.

Das "unitl" bei thekorn soll natürlich "until" heißen. :)

Außerdem hast du nicht gesagt welche Shell du verwendest - zugegeben Bash ist meist die Standardshell aber es gibt eben mehrere.

Ich würde ein solche Schleife in Bash vermutlich so schreiben:
Bash:
declare -i i=0
while [[ $((++i)) -le 10 ]]; do
  echo $i
done
Oder so:
Bash:
for i in $(seq 10); do
  echo $i
done
Gruß
 
Den meisten Posix-Systemen sind Endungen relativ schnurz. Der Zweck einer Datei wird von ihrem Inhalt d.h. ihrem Mime-Typ und spezifischen Merkmalen in ihrem Aufbau bestimmt.
D.h. eine Textdatei bleibt eine Textdatei solange man sie mit keinem Programm aufruft. Im Fall von Bash-Skripten bedeutet dies eine kompatible Shell wie bash oder sh (auf den meisten Systemen verweist sh standardmäßig auf bash). Um dem System zu sagen was es mit der Datei machen soll benutzt man die shebang-Zeichenkombination am Anfang des Files. Diese besteht aus #! gefolgt vom Pfad der Executable mit der die Datei geöffnet werden soll. Im Fall von shell-sripts für gewöhnlich #!/bin/sh. Damit du nun einfach auf die Datei Doppelklicken kannst muss sie noch entsprechende Dateiberechtigungen besitzen, da man normalerweise in einem unixoiden System mit restriktivem Rechtemanagement keine Datei einfach so ausführen darf. Dies erreichst du durch folgenden simplen Befehl:

Bash:
chmod +x /pfad/zu/deiner/datei

Achja: Weils hübsch aussieht haben Skripte meist die Endung .sh :)

Edit: Natürlich Endungen ... danke deepthroat
 
Zuletzt bearbeitet:
Hi.

Das "unitl" bei thekorn soll natürlich "until" heißen. :)

Außerdem hast du nicht gesagt welche Shell du verwendest - zugegeben Bash ist meist die Standardshell aber es gibt eben mehrere.

Ich würde ein solche Schleife in Bash vermutlich so schreiben:
Bash:
declare -i i=0
while [[ $((++i)) -le 10 ]]; do
  echo $i
done
Oder so:
Bash:
for i in $(seq 10); do
  echo $i
done
Gruß

Gute Info, danke schön von einem Linux Anfänger.
Wie aber kriegt man es hin, dass der Zähler rückwärts läuft?
Bisher bekomme ich nur Fehlermeldungen beim "Drauflosprobieren", grins.
Besten Dank
 
jippe und der Countdown läuft wie gewünscht:

for ((i=30; i > -1 ; i--)); do
> echo "in " $i " halben Sekunden ist der Countdown vorbei"
> sleep 0.5
> done
 
Zurück