Shell-Script zum auslesen von Dateiinhalten

Post Reply
Message
Author
Martin K.

Shell-Script zum auslesen von Dateiinhalten

#1 Post by Martin K. »

Hallo!!

Ich versuche irgendwie schon die ganze Zeit was passendes zu finden.

Und zwar muss ich aus einer Datei 2 Werte auslesen und in Variable (x und y) speichern, damit ich danach in einer if Anweisung auf den Inhalt der Variablen reagieren kann.

Die Datei hat auch nur genau 2 Zeilen und in jeder Zeile steht genau ein Wert. Eigentlich müsste es ziemlich einfach sein...nur ich komm irgendwie nicht drauf.

Nach beenden der if-Anweisung sollte dann der Inhalt der Datei gelöscht werden.

Danke schonmal im Voraus!!

User avatar
jochen
prolinux-forum-admin
Posts: 699
Joined: 14. Jan 2000 15:37
Location: Jülich
Contact:

#2 Post by jochen »

In Variablen einlesen kann man in der Shell mittels read. Allerdings funktioniert

Code: Select all

read A < $DATEI
read B < $DATEI
nicht, weil die Shell die Datei pro read-Kommando öffnet und schließt. In Variable A und B steht dann immer der Inhalt der ersten Zeile.

Wenn man Kommandos gruppiert, teilen sie sich den Dateideskriptor sozusagen. So geht's:

Code: Select all

&#123; read A; read B; &#125; < $DATEI
Das erste read-Kommando liest die erste Zeile, das zweite die zweite Zeile.

Achte auf die Syntax! Das Leerzeichen zwischen dem letzten ; und } muss da stehen!

Jochen
Die grösste Lüge der EDV? "Mal eben..."

Martin K.

#3 Post by Martin K. »

Vielen dank für die Antwort!!

Funktioniert prima!...jetzt hab ich aber ein etwas anderes Problem.
Bei dem weiterarbeiten mit den Variablen will ich eine Fall-Unterscheidung reinbringen,
hab im Netz aber nur if-Anweisungen gefunden die überprüfen ob die Varaible einen Wert hat und nicht auf den Inhalt der Variablen überprüfen...

Code: Select all

if&#40;$x == 1&#41;
then
/etc/init.d/httpd start
fi
funktioniert z.B. nicht...

Code: Select all

if&#40;$x&#41;
then
/etc/init.d/httpd start
fi
dagegen schon...
Was mache ich falsch??

Danke nochmal!

Martin K.

#4 Post by Martin K. »

ich hab die Lösung gefunden:

Code: Select all

if &#91; "$x" = "1" &#93;; then
             <Befehl>
fi
so tuts....


aber trotzdem danke!!

Post Reply