PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Linux Shell



Groba
03-06-2004, 10:42
Hallo,

îch habe vom Betrieb eine aufgabenstellung bekommen die folgt aussieht.

wir wollen über ne kickstart datei eine Installation laufen lassen und nun soll ich anhand eines shell scripts Variablen aus dieser Kickstart datei auslesen dessen Wert umändern und die Werte durch die einer anderen Datei (sagen wir mal die liegen in test.txt) ändern.
Leider habe ich fast keinen Plan von dem und habe gehofft jemand von euch kann mir helfen.
Die Variablen in der Kickstart wären einfach a,b,c,d und sollen durch d,e,f,g aus der Datei test.txt ersetzt werden.

Ich bedanke mich jetzt schon einal für die Hilfe.

Gruß Groba

fs111
03-06-2004, 12:08
Hmm, Du machst reichlich wenig Angabe darüber, wie die Dateien im einzelnen aussehen. Für konkrete Vorschläge müsstest Du mal auszugsweise etwas davon posten.

fs111

Groba
03-06-2004, 15:50
Wenn ich jetzt noch wüsste wie man das mit dem array macht :D
Nach 2 Tagen Linux ist man noch nicht soweit en Array zu bauen ;)

Gruß Groba

RapidMax
03-06-2004, 22:23
Hmm ich habe hier sowas rumliegen, was deiner Aufgabe entsprechen könnte. Nehmen wir an du hast eine Datei mit folgendem Inhalt:

datei.txt:
#!/usr/bin/schkript
variable = @foo@ .
schrei_in konsole: "@spam@" + variable .
sag @no@! .
finito .
Hier möchtest du alle zwischen @ gefassten Werte mit den Werten aus einer zweiten Datei ersetzten:

config.txt:
foo = bar
spam= eggs
no = nope
Die Arbeit erledigt das folgende Skript:

#!/bin/bash

function getkey() {
sed -e "/^$2 *=/!d
s/^$2 *= *//" $1
}

function at_replace() {
REPSTR=""
for item in $@
do
RKEY=`echo $item | cut -d ":" -f1`
RVAL=`echo $item | cut -d ":" -f2`
REPSTR="$REPSTR
s/@$RKEY@/$RVAL/g"
done
sed -e "$REPSTR"
}

replace_args=""
for key in `cut -d "=" -f1 config.txt`
do
value=`getkey config.txt $key`
replace_args="$replace_args $key:$value"
done
at_replace $replace_args < datei.txt > zieldatei.txt
Den Inhalt der Funktionen verstehtst du vermutlich noch nicht. Anhand des Hautprogram sollte die Anwendung klar sein.

Gruss, Andy

Groba
04-06-2004, 08:22
Vielen Dank Andi das du zu sowas Zeit gefunden hast.

ich werde mich mal damit befassen und versuchen meine Aufgabenstellung zu lösen

Danke nochmal :)

Gruß Daniel

Groba
04-06-2004, 10:25
Hallo, also ich habe soweit alles angelegt nur habe ich das Prob das er meint

cut:invalid byte or field list

ich habe in der help Datei geschaut aber leider nix gefunden.

Kann es sein das eventue etwas mit dem Script nicht stimmt?

Gruß Daniel

Groba
04-06-2004, 13:43
Okay des problem ist weg nur jetzt meckert er er den sed Befehl an uzw.
Aufbau ist noch der gleiche wie vom oberen Script nur angepasst.

sed: -e expression #1 char15:Unknow Command "*"
-e expression #1 13 Extra characters after Command
-e expression #1 14 Extra characters after Command
-e expression #1 12 Extra characters after Command
-e expression #1 char15:Unknow Command "R"


hilfe wäre supi thx , Groba

RapidMax
05-06-2004, 21:17
Bei den Ersetzungs-Werten müssen die Zeichen "/" "\" escaped werden, indem du ein "\" davor stellst. Die Schlüssel sollten nur Buchstaben und Zahlen enthalten.

Gruss, Andy