Frage von jan2220, 42

[Linux Script] Wie macht man eine Schleife die etwas "paar" mal ausführt?

Hallo Liebe Community,

Ich wollte mal fragen wie man in einem Linux Script eine Schleife machen kann in der man im Script angeben kann wie oft etwas wiederholt werden soll. Wäre nett wenn derjenige auch noch kennzeichnen könnte wo ich meine Befehle einfügen muss :D Srryyy mache noch nicht viel mit Linux

MfG. Jan (Jan2220)

Antwort
von Linuxhase, 10

Hallo

Ich wollte mal fragen wie man in einem Linux Script eine Schleife machen
kann in der man im Script angeben kann wie oft etwas wiederholt werden
soll.

So:

for i in $(echo 1 2 3 4); do echo "Hallo $USER" ; done

Da kannst Du so viele Zahlen hinschreiben wie Du benötigst. Wenn es Dir aber darum geht eine Ausgabe eines anderen Programms zu bearbeiten, dann z.B. so:

for i in $(ls -1) ; do file $i ; done

In diesem Beispiel würde der Befehl file $i so oft ausgeführt werden wie Dateien/Verzeichnis im aktuellen Verzeichnis sind. (Weil ja davor das Kommando ls -1 für jede Datei und jedes Verzeichnis eine Zeile ausgibt.      Das $i ist dann für das file Kommando die Eingabe. Statt des Buchstabens 'i' kann man natürlich nahezu jeden anderen String benutzen, etwa auch:

for INPUT in $(ls -1) ; do file $INPUT ; done

Den ganzen Kram kann man natürlich aich in "übersichtlicher" Script Form schreiben wenn man das lieber hat:

#!/bin/bash

for i in $(ls -1);
do
file $i;
done

Linuxhase

Expertenantwort
von guenterhalt, Community-Experte für Linux, 18

"Linux Script" ? so etwas gibt es nicht. Es gibt viele Script-Sprachen, die man unter Linux benutzen  kann.

ksh , csh, sh , bash, tclsh, perl ....

Du solltest schon sagen, womit du programmieren willst.
Ich bevorzuge die tclsh ( muss aber bei einigen Distributionen nach-installiert werden).

So eine Schleife könnte man mit:

set i 0 ; set max <Zahlenwert>
while { $i <  $max } { <Befehl1> ; <Befehl2> ; ..... ; incr i }

 oder auch

for { set i 0 } { $i < "4" }  { incr i } { puts $i }

( puts $i ist dabei einer der Befehle )

oder auch

foreach i { 0 1 2 3 } { puts $i } 

Das Schöne an der tclsh ist, dass die Syntax einer höheren Programmiersprache sehr nahe kommt. Hinzu kommt, dass es eine Erweiterung gibt, mit der auch grafische Oberflächen-Elemente auf den Bildschirm "gezaubert" werden können.

 

Kommentar von TeeTier ,

Sehr richtig. Außerdem gibt es - je nach Shell - nahezu unendlich viele Möglichkeiten, eine Schleife zu bauen:

limit=10
i=0
while [ $i -lt $limit ]; do
echo $i

let i+=1
done

Undsoweiterundsofort ... :)

Antwort
von Rynak, 20

Hier unter Schleifen:
https://wiki.ubuntuusers.de/Shell/Bash-Skripting-Guide_f%C3%BCr_Anf%C3%A4nger/

Antwort
von AlderMoo, 14

do sollte das können.

Syntax bei man do

Antwort
von W00dp3ckr, 14

In bash:

for i in 1 2 3 4 5 ; do

blah

done

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten