Linux Shell (for Schleife)


#2
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:

deepthroat

Erfahrenes Mitglied
#4
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ß
 

Raubkopierer

Erfahrenes Mitglied
#7
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:
#8
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