Shell, 4 Durchgänge, dann "Tu etwas", dann mach wieder 4 Durchgänge usw.

Artaxx

Artaxx

Aktives Mitglied
Thread Starter
Dabei seit
25.03.2004
Beiträge
6.349
Reaktionspunkte
216
Hallo Leute,

ich arbeite mich gerade in Shell ein und hätte ein Frage:

Ich habe einen Zähler der bis z.B. 4 hochzählen soll, dann eine Ausgabe machen soll und dann weiterzählen soll. Und das unendlich.

Sprich:

1
2
3
4
Pause
5
6
7
8
Pause
9
10
11
12
Pause

usw.

Kann da jemand helfen?

Dankeschön :)

Gruß
Daniel
 
Du hast oder möchtest haben? Wo ist Dein Problem? Welche Shell benutzt Du?

Schau Dir mal sleep an ($>man sleep)
 
Ich möchte sowas realisieren.

Sleep unterbricht mir ja nur die Schleife für einen bestimmten Zeitraum. Damit könnte ich doch nur ein:
1
2
3
4
=> x Sekunden Pause
5
6
7
8
=> x Sekunden Pause

realisieren, oder?
 
Ich suche eher was in dem Dreh:

Wenn Counter = Counter+10 dann melde mir den Counterstand und zähle weiter bis wieder 10 mehr erreicht sind.

Das habe ich bislang:

Code:
let Zaehler=Zaehler+1
echo Zaehler $Zaehler

Und eigentlich würde ich jetzt folgendes machen:

Code:
if [ Zaehler -ge 10 ] then echo Ziel 10 erreicht

Dann würde er mir nach meiner Logik nachdem 10 erreicht ist ausgeben dass das Ziel 10 erreicht ist.

Aber wie geht es weiter?

P.S.: Das Ganze ist aktuell in einer While : Schleife!
 
Zuletzt bearbeitet:
Nachtrag: Du brauchst Schleifen und Konditionen.. Für die Schleife ist for da, für die Kondition if then else. Sleep ist dafür da, dass Du in der Schleife für eine bestimmte Zeit warten kannst. Es klang für mich so als wolltest Du zu nem bestimmten Zeitpunkt (nach x sekunden) ne Ausgabe machen.
 
Nein, ich wollte nach einem erreichten Zählerstand etwas ausgeben.

Das heisst ich müsste einen Zähler hochzählen lassen und in der Schleife jedes Mal wenn z.B. der Zähler 10 mehr auf der Uhr hat etwas ausgeben.
 
Das Skript darf auch gerne nach einer vorbestimmten Zeit eine Pause machen um etwas auszugeben.
 
korrekt. das kannst du mit dem modulo-operator prüfen
Code:
for x in {0..100}; do 
  if (( $x%10==0 )); then  
    echo $x; 
  fi; 
done

schreibt jedes vielfache von 10 zwischen 0 und 100 aus.
 
Okay, das bringt mir das Ergebnis was ich will.

Ich kriege jetzt die Ausgabe:
1
Pause
2
3
4
5
6
7
8
9
10
11
Pause
12
13
14
15

An welchem Wert muss ich drehen damit er mir z.B. die Pause nach 100 macht und das Skript endlos durchläuft?
 
dann möchtest du keine for-loop sondern eine while-loop. aber ganz ehrlich. mit etwas anlesen bekommst du das doch selbst raus, oder?
 
Ich suche mir aktuell einen Wolf. Ich stehe da ganz am Anfang und weiß nicht mal nach was ich suchen soll.

Kann man in einer While Schleife auch einen Wert mitgeben? Kann man irgendwo gut nachlesen was auch genau das $x24==0 macht? Dann wäre mir echt geholfen!
 
Hm. Du hast keine Programmiererfahrung?

Code:
x=0; 
while(true); do 
  if (($x%10==0)); then  
    echo $x; 
  fi; 
  ((x=$x+1)); 
done
 
Ich hab Dir oben nen Link gegeben, wo man sich Shell-Programmierung anlesen kann. Ohne rudimentäre Kenntnisse in Programmierung (Variablen, Konditionen, Schleifen) wird das aber auch schwer.
 
Das war die Lösung. Vielen Dank!

Naja, Programmiererfahrung ... solala ... ich hatte mal 2 Semester Perl, das ist aber 8 Jahre her. Und jetzt muss ich mich wieder einarbeiten, tu mich aber doch arg schwer.
 
Zurück
Oben Unten