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?
Problem mit ShellSkript
-
- prolinux-forum-admin
- Posts: 1444
- Joined: 26. Jun 2004 21:18
- Contact:
Code: Select all
#!/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
Code: Select all
echo $Prog1
echo $Prog2
-
- prolinux-forum-admin
- Posts: 1444
- Joined: 26. Jun 2004 21:18
- Contact:
Als Beispiel eine while-Schleife die drei mal durchlaufen wird:
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:
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?
Code: Select all
c=1
while [ $c -le 3 ]
do
echo $Prog1
echo $Prog2
sleep 2s
c=$[ $c+1 ]
done
Ich schätze am günstigsten wäre es gleich die beiden if-Verzweigungen in eine Schleife zu
packen:
Code: Select all
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
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 .
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?
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?
-
- prolinux-forum-admin
- Posts: 1444
- Joined: 26. Jun 2004 21:18
- Contact:
Code: Select all
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 .
Vielen Dank!
Ich pack jetzt da noch ein:
rein und dann ist es genau das was ich benötige!
Nochmals vielen Dank für deine Hilfe!
Ich pack jetzt da noch ein:
Code: Select all
until false; do
done
Nochmals vielen Dank für deine Hilfe!