if/then/else

Post Reply
Message
Author
riedel1
Posts: 2
Joined: 16. Aug 1999 19:35
Location: BS
Contact:

if/then/else

#1 Post by riedel1 »

Hi ho,

wieder mal ein Problem.

Ich habe ein shell script geschrieben das auch funktioniert.
Das Script soll für die SuSE7.0 DoD fuer T-DSL automatisch installieren (kann die 7.0 ja noch nicht).
In diesem Script werden in zwei dateien befehle reingeschrieben (ueber echo bla >>/datei)
Jetzt haette ich aber gerne eine Ueberpruefung ob die befehle schon vorhanden sind. Sind sie vorhanden, soll sich das Programm beenden.

Zur Zeit sieht es so aus (adod heist das Script)

if grep "demand" /bla/datei1
then
echo" datei1 schon ready"
killall adod

else
script abarbeiten

fi

Soweit so gut.
Damit wird aber nur die Datei1 kontr., nicht aber auch Datei2.
Ich moechte aber nicht nur kontr. ob in Datei1 schonwas steht, sondern auch noch kontr. ob Datei2 shon Modefiziert worden ist. Wenn ja, dann soll das Script seine Arbeit beenden, bzw. ist nichts vorhanden soll das Script weiter arbeiten.

DANKE
bye
Riedel -> www.riedelweb.de

hugenay

Re: if/then/else

#2 Post by hugenay »

Dateimodifizierungen liessen sich doch mit "test" rauskriegen, oder nem Gegenstück zu "touch" (man pages mal checken), hab ich gerade nicht im Kopf, find kann das ja....

ich hab dich aber noch nicht ganz verstanden. was ist datei 2, die abgedruckte? verfahre doch einfach so wie mit Datei 2. Brauchst du überhaupt 2 Dateien? oder ist eine das Skript und die andere ne Ablage für nen Variablenwert?

riedel1
Posts: 2
Joined: 16. Aug 1999 19:35
Location: BS
Contact:

Re: if/then/else

#3 Post by riedel1 »

Hi,

ich hoffe das ich mich jetzt besser ausdruecke.....

das Script aendert zwei Dateien.
echo "bla1" >>/etc/datei1 # schreibe bla1 in /etc/datei1
echo "bla2" >>/etc/datei2 #schreibe bla2 in /etc/datei2

Datei1 kann ich testen lassen mit:
if grep "bla1" /etc/datei1
then
echo" datei1 schon ready"
killall adod

else
was hier steht, soll ausgefuehrt werden.

Mein Problem ist jetzt, dass ich nicht weis wie ich auch noch Datei2 testen lassen kann.
Ich moechte erreichen, das erst kontr. wird ob in "Datei1" das Wort "bla1" vorkommt und danach (und das ist mein Problem) testen ob in "Datei2" das Wort "bla2" vorkommt.
Wenn in Datei1 und Datei2 die Woerter gefunden werden, soll das Programm abbrechen.
Findet er in keiner der Dateien die Woerter (und nur dann), soll das Programm weiter machen.

Leider sind meine Programmierkenntisse gleich /dev/null <img src="http://www.pl-forum.de/UltraBoard/Images/Wilk.gif" border="0" align="middle">

Ich stelle mir das also so vor (ich weiss, was jetzt kommt geht nicht, aber ich hoffe es wird klarer was ich moechte)

if grep "bla1" /etc/datei1
then
echo" datei1 schon ready"
killall adod

if grep "bla2" /etc/datei2
then
echo" datei2 schon ready"
killall adod

else
script abarbeiten

fi

Verstehst du jetzt was ich erreichen moechte??
Ich hoffe es jedenfalls <img src="http://www.pl-forum.de/UltraBoard/Images/Happy.gif" border="0" align="middle">
bye
Riedel -> www.riedelweb.de

hugenay

Re: if/then/else

#4 Post by hugenay »

>>Ich stelle mir das also so vor (ich weiss, was jetzt kommt geht nicht, aber ich hoffe es wird klarer was ich moechte)<<

wieso geht das nicht? in der shell kann man doch if-Schleifen schachteln (oder bin ich jetzt schon perl-geprägt?)...
sonst kannst du eine Schleife ja als Funktion ausdrücken, die nen boolschen Wert (0/1)zurückgibt und das lässt sich ja gut testen ( test oder [] ) oder mit dem logischen UND Operator (&&). Also: if [ grep "demand" /bla/datei1 && grep "demandzwotens" /bla/datei2 ] ; then killall adod; else adod ; fi
Hm, das ist wohl noch am elegantesten. Ist übrigens ziemlich schwer wenn man sich gerade mit perl beschäftigt, da kann man leicht was mit der shell durcheinanderzubringen...

Post Reply