Hinweis: Das Forum wird geschlossen! Neue Registrierungen sind nicht mehr möglich!

 Zurück zu Pro-Linux   Foren-Übersicht   FAQ     Suchen    Mitgliederliste
Problem mit ShellSkript

 
Neuen Beitrag schreiben   Auf Beitrag antworten    Pro-Linux Foren-Übersicht -> Programmieren - Allgemein
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
rbtuxli
Gast





BeitragVerfasst am: 06. Mai 2005 12:52   Titel: Problem mit ShellSkript

Hallo Leuts

ich habe leider nicht allzuviel Erfahrung mit shellprogrammierung und komm daher nicht mehr weiter mit meinem Skript.

Mein Skript dient dazu den Status von zuvor definierten Anwendungen abzufragen und danach auszugeben.

Es läuft eigentlich alles wunderbar, bis auf die Ausgabe.

Ich habe im Programm die variablen Prog1, Prog2, Prog3, ..., ProgN welche den Status der Anwendungen speichern. Als weiteres habe ich die Variable ProgC welche als Wert die Anzahl der ProgX-Variablen besitzt.

Ich möchte jetzt, dass mein Programm das folgendermassen ausgibt:

echo Prog1
echo Prog2

2 Sekunden warten

echo Prog2
echo Prog3

2 Sekunden warten

...

Wenn alle Variabeln durchgelaufen sind, soll die wieder bei Prog1 angefangen werden, also eine endlos schlaufe.

ich habe aber keine Ahnung wie ich das realisieren könnte.

kann mir vielleicht jemand helfen?
 

klopskuchen
prolinux-forum-admin


Anmeldungsdatum: 26.06.2004
Beiträge: 1444

BeitragVerfasst am: 06. Mai 2005 13:08   Titel:

Und wie sieht dein Script nun aus?
_________________
When all else fails, read the instructions .
 
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen

rbtuxli
Gast





BeitragVerfasst am: 06. Mai 2005 16:04   Titel:

Code:
#!/bin/sh
function readfile() {
 local File=$1
 local SaveTo=$2
 local -i counter=0

 while read line; do
  eval "$2[$counter]"=\'$line\'
  counter=$(($counter+1))
 done < $File

 eval "$3"=$counter
}

ProgC = 2

if [ -f /srv/dat/mysql/rbtx2.pid ]; then
 Prog1="MySQL: running"
else
 Prog1="MySQL: stopped"
fi

if [ -f /srv/sys/bind/9.2.2/var/run/named.pid ]; then
 Prog2="BIND: running"
else
 Prog2="BIND: stopped"
fi
Anstelle des folgenden Bereichs müsste eben die untenerwähnte schlaufe kommen
Code:

echo $Prog1
echo $Prog2


kannst du mir da helfen?
 

klopskuchen
prolinux-forum-admin


Anmeldungsdatum: 26.06.2004
Beiträge: 1444

BeitragVerfasst am: 06. Mai 2005 17:49   Titel:

Als Beispiel eine while-Schleife die drei mal durchlaufen wird:

Code:
c=1
while [ $c -le 3 ]
do
    echo $Prog1
    echo $Prog2
    sleep 2s
    c=$[ $c+1 ]
done


Das ist nur ein Beispiel da ich die Ausführungsbedingung für deine Schleife nicht kenne.
Ich schätze am günstigsten wäre es gleich die beiden if-Verzweigungen in eine Schleife zu
packen:

Code:
while [ Bedingung ]
do
     if [ -f /srv/dat/mysql/rbtx2.pid ]; then
     Prog1="MySQL: running"
    else
     Prog1="MySQL: stopped"
    fi
    echo $Prog1

    if [ -f /srv/sys/bind/9.2.2/var/run/named.pid ]; then
     Prog2="BIND: running"
    else
     Prog2="BIND: stopped"
    fi
    echo $Prog2

    sleep 2s
done


Das ganze kann dann noch verkürzt werden in dem der in der if-Bedingung überprüfte Zustand
nicht über den Umweg einer Variablen abgefragt wird, sondern nach der jeweiligen if-Verzweigung einfach
ein String ausgegeben wird. Also gleich ein echo.

Sowas in der Art?
_________________
When all else fails, read the instructions .
 
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen

rbtuxli
Gast





BeitragVerfasst am: 06. Mai 2005 23:26   Titel:

Erstmals danke für die schnelle Hilfe!

Das Skript soll natürlich nachher mehr als nur 2 Applikationen überprüfen.

der echo befehl wird dann auch umgeleitet auf eine LCD auf der nur zwei zeilen platz haben.

dann soll so immer gescrollt werden zwischen den Anwendungen:

Prog1
Prog2

2 Sekunden

Prog2
Prog3

...
Danach wieder von vorne:

ProgN
Prog1

und das ohne ende

ist das mit shellprogrammierung denn möglich?
 

klopskuchen
prolinux-forum-admin


Anmeldungsdatum: 26.06.2004
Beiträge: 1444

BeitragVerfasst am: 07. Mai 2005 0:17   Titel:

Code:

function mysql () {
if [ -f /srv/dat/mysql/rbtx2.pid ]; then
 echo "mysql running"
else
 echo "mysql stop"
fi
}
.
.
.
# irgendwo in einer Endlosschleife

mysql()
apache()
sleep 2s

clear
apache()
bind()
sleep 2s

clear
bind()
rbtuxlis_superserver()
sleep 2s
.
.
.

_________________
When all else fails, read the instructions .
 
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen

rbtuxli
Gast





BeitragVerfasst am: 07. Mai 2005 11:45   Titel:

Vielen Dank!

Ich pack jetzt da noch ein:
Code:
until false; do
done

rein und dann ist es genau das was ich benötige!

Nochmals vielen Dank für deine Hilfe!
 

Beiträge vom vorherigen Thema anzeigen:   
     Pro-Linux Foren-Übersicht -> Programmieren - Allgemein Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehen Sie zu:  

Powered by phpBB © phpBB Group
pro_linux Theme © 2004 by Mandaxy