Archiv verlassen und diese Seite im Standarddesign anzeigen : Linux Shell
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
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
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
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
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
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
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.