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

 Zurück zu Pro-Linux   Foren-Übersicht   FAQ     Suchen    Mitgliederliste
Brauche Hilfe

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



Anmeldungsdatum: 23.06.2004
Beiträge: 69

BeitragVerfasst am: 04. Okt 2004 19:20   Titel: Brauche Hilfe

Ich möchte ein Shellskript programmieren, welches eine Datei einliest

auf jeder Zeile steht ein eintrag=wert

für den eintrag existiert eine Variable welche ich mit dem Wert füllen möchte

anderseits möchte ich auch aus einer Variable den eintrag wieder setzen

geht das mit sed?

Kann mir da evtl. jemand helfen
_________________
Computer führen dazu, dass man die alten Fehler jetzt 100 mal schneller macht Wink
 
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden

kanonenfutter



Anmeldungsdatum: 10.09.2004
Beiträge: 266

BeitragVerfasst am: 04. Okt 2004 20:34   Titel:

> für den eintrag existiert eine Variable welche ich mit dem Wert füllen möchte

dazu würde es doch genügen, die datei zu "sourcen": source DATEI.

> anderseits möchte ich auch aus einer Variable den eintrag wieder setzen

ich versteh nicht, was du meinst.

PS: generell ist es sinnvoll, inhaltsbezogene subjects zu verwenden. "brauche hilfe" könnte man für jeden thread nehmen.
_________________
"Email und Internet haben gemeinsam, dass sie beide in HTML geschrieben sind" (Peter Huth, TV-Computerexperte). Zitiert nach http://www.antihuth.de/
 
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen

rbtux



Anmeldungsdatum: 23.06.2004
Beiträge: 69

BeitragVerfasst am: 05. Okt 2004 15:28   Titel:

Danke erstmal

Also ich versuchs nochmal.

ich habe eine Datei z.b /etc/conf

in dieser stehen:

eintrag1=wert1
eintrag2=wert2
eintrag3=wert3

Ich möchte jetzt per Shellskript für jeden Wert den User fragen ob er den Bestehenden wert auswählen möchte oder einen anderen eingeben will:

Der angegebene Wert (falls nichts angegeben ist soll wert unverändert bleiben) soll dann vom Skript natürlich wieder in die Datei geschrieben werden!

Ich hoffe es war jetzt verständlicher!
_________________
Computer führen dazu, dass man die alten Fehler jetzt 100 mal schneller macht Wink
 
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden

kanonenfutter



Anmeldungsdatum: 10.09.2004
Beiträge: 266

BeitragVerfasst am: 05. Okt 2004 19:09   Titel:

das ist ja wie im krimi -- die interessanten details kommen erst nach und nach zum vorschein. jetzt soll auch noch eine user-interaktion eingebaut sein.....

das wird dann etwas aufwendiger. du willst hier sozusagen einen conf-file-editor bauen (warum ruft dein skript nicht einfach einen editor? ist doch viel bequemer als aller werte einzeln abklappern zu müssen, auch wenn man womöglich gar nichts ändern will).

sicher gibt es mehrere millionen möglichkeiten, so ein skript zu implementieren. man könnte zb die wertepaare einlesen (mit WHILE read .... < FILE. trennen von key/value mittels parametersubstitution oder mit IFS="=") und gleichzeitig für jeden wert den neuen wert abfragen. (wenn neuer wert=="", bleibt der alte bestehen). das neue wertepaar kann man dann (falls geändert) mit perl direkt neu schreiben, oder man speichert alle wertepaare direkt mit echo in einer temporären datei, die dann am ende die ursprüngliche datei ersetzt. dazu würde dann eine einzige while-schleife genügen.
ist es das, was du dir vorgestellt hast? bevor ich hier fertigen code liefere warte ich erstmal, ob noch bessere vorschläge kommen, denn wie gesagt: es gibt viele möglichkeiten.
das grobe gerüst würde dann etwa so aussehen:
Code:
#!/bin/bash
DATEIALT=/etc/conf~
DATEINEU=/etc/conf
mv -f $DATEINEU $DATEIALT

MYIFS=$IFS
IFS="="
while read KEY VALUE; do
   echo -n "$KEY=$VALUE. neuer Wert?: "
   read NEWVAL
   [ "$NEWVAL" = "" ] || VALUE=$NEWVAL
   echo $KEY=$VALUE >> $DATEINEU
done < $DATEIALT

IFS=$MYIFS

hier wird natürlich das format der conf-datei überhaupt nicht geprüft, es wird angenommen, dass alles ok ist und auch, dass der user das skript nicht abbricht.
_________________
"Email und Internet haben gemeinsam, dass sie beide in HTML geschrieben sind" (Peter Huth, TV-Computerexperte). Zitiert nach http://www.antihuth.de/
 
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen

rbtux



Anmeldungsdatum: 23.06.2004
Beiträge: 69

BeitragVerfasst am: 05. Okt 2004 19:15   Titel:

Hy,

Code:
echo -n "$KEY=$VALUE. neuer Wert?: "
   read NEWVAL


das war der Teil des Skripts den ich nicht lösen konnte. Habe nicht fiel erfahrung mit Bash (wie du wahrscheinlich gemerkt hast!)

Ich hoffe ich krieg den rest jetzt selber hin.

Vielen Dank
_________________
Computer führen dazu, dass man die alten Fehler jetzt 100 mal schneller macht Wink
 
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden

kanonenfutter



Anmeldungsdatum: 10.09.2004
Beiträge: 266

BeitragVerfasst am: 05. Okt 2004 19:30   Titel:

nanu, das parsen der datei hast du hingekriegt, aber beim ausgeben eines textes (echo) und lesen von tastatur (read) hattest du probleme?
ich versteh die welt nicht mehr....Wink

dabei fällt mir ein, dass es so wohl noch nicht geht, weil das read ja innerhalb der "while read"-schleife steht (er liest dann von datei statt von tastatur).
_________________
"Email und Internet haben gemeinsam, dass sie beide in HTML geschrieben sind" (Peter Huth, TV-Computerexperte). Zitiert nach http://www.antihuth.de/
 
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen

rbtux



Anmeldungsdatum: 23.06.2004
Beiträge: 69

BeitragVerfasst am: 05. Okt 2004 19:33   Titel:

Da hast du galub was falsch verstanden,

echo ist glaub so ziemlich der erste teil von bash den ich kennengelernt habe

read kannte ich einfach nicht und habe auch nicht auf anhieb etwas gefunden.

also danke nochmal
_________________
Computer führen dazu, dass man die alten Fehler jetzt 100 mal schneller macht Wink
 
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden

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