roger: Shell forschleife rückwärts

Hallo,

ich habe ein bestehendes Startscript das diverse Programme startet.
Nun sollte aber beim beenden die Reichenfolge umgekehrt sein.

d.h

1. Programm start
2. Programm start
usw.

letztes Programm stop
...
2. Programm stop
1. Programm stop

Hier der Teil zum stoppen...
Den möchte ich umdrehen.

<code>
 for (( s=0; s < (${#programme[*]}); s++));
    do
      prog=echo "${programme[s]}" | awk -F"," '{print $1}'
      prog=echo $prog | sed -e "s/ //"
           zeit=echo "${programme[s]}" | awk -F"," '{print $2}'

      echo -n "Shutting down $prog"  

killproc -TERM $prog

</code>

Gruß
        roger

  1. Moin!

    Hier der Teil zum stoppen...
    Den möchte ich umdrehen.

    Und wo ist das Problem? Die FOR-Schleife dürfte sich vermutlich exakt so verhalten, wie jede normale C-artige FOR-Schleife:
    Erstes Argument: Startzustand definieren.
    Zweites Argument: Abbruchbedingung
    Drittes Argument: Code für "weiter" mit dem nächsten Durchlauf.

    Momentan setzt du s=0 und inkrementierst solange, wie s kleiner (${#programme[*]}) ist.

    Umdrehen dürfte relativ simpel sein: Erstens dekrementieren, zweitens Startwert nicht auf die 0 setzen, drittens Abbruchbedingung nicht auf (${#programme[*]}) setzen.

    <code>
    for (( s=0; s < (${#programme[*]}); s++));
    </code>

    - Sven Rautenberg

    1. Morgen,

      Und wo ist das Problem?

      Ich weiß es nicht, sonst hätte ich nicht gefragt.
      .... wenn es so einfach für dich ist, warum kannst du nicht die "eine" Zeile korrigieren. !!

      Gruß
          roger

      1. Hallo ,

        Ich weiß es nicht, sonst hätte ich nicht gefragt.
        .... wenn es so einfach für dich ist, warum kannst du nicht die "eine" Zeile korrigieren. !!

        http://de.selfhtml.org/javascript/sprache/schleifen.htm#for

        for (zaehler=startwert; schleifen-abbruchbedingung; aenderung zaehler)

        entgegen der sinnvollen vorgabe selberfindung zu unterstützen

        for (( s=${#programme[*]}; s >0; s--));

        mfg

        1. Hallo,

          Ich weiß es nicht, sonst hätte ich nicht gefragt.
          .... wenn es so einfach für dich ist, warum kannst du nicht die "eine" Zeile korrigieren. !!

          http://de.selfhtml.org/javascript/sprache/schleifen.htm#for

          for (zaehler=startwert; schleifen-abbruchbedingung; aenderung zaehler)

          entgegen der sinnvollen vorgabe selberfindung zu unterstützen

          for (( s=${#programme[*]}; s >0; s--));

          als Übungsaufgabe für den OP hast Du geschickt einen Fehler eingebaut:
          Der Startwert ist zu groß und die Schleife bricht zu früh ab.

          Freundliche Grüße

          Vinzenz

          1. Hallo,

            es muss so lauten

            for (( s=${#programme[*]}-1; s >= 0 ; s--));

            Danke
                 roger