Martin Mewes schrieb:
Hallo zusammen,
ich habe hier ein Problem, wo ich nicht weiterkomme.
Ich bin gerade dabei Webmin für SuSE Linux Beta1 zu schnüren und muß dafür die SPEC-Datei des originalen src.rpm ein wenig ändern, um SuSE-kompatibel zu sein. Hier ist der betreffende Teil:
<schnippsel> echo "Inserting Mail to root within %post right before %preun" echo "using the data of mail_to_root.txt in this directory" mailtoroot="$(< mail_to_root.txt)" echo "${mailtoroot}" sed -e 's/\%preun/${mailtoroot}/g' webmin-${version}.stage03 > webmin-${version}.stage04 echo "${mailtoroot}" </schnippsel>
Ich möchte also den Inhalt einer Datei auslesen und dann eine Dateimarke mit dem Inhalt ersetzen. In diesem Falle halt eine eMail an root nach erfolgreicher Installation. Meine Dateimarke heißt hier "%preun" und aus der Textdatei wird weiterer Code an diese Stelle eingefügt ...
< cat mail_to_root.txt > mail -s "Webmin properly installed" root <
%preun cat mail_to_root.txt >
... so daß das SPEC-File wieder sein %preun hat.
Ich kann jedoch machen, was ich will: Die Variable ${mailtoroot} nimmt via cat den Inhalt entgegen, aber das sed schreibt ${mailtoroot} an die
Ist ja auch klar, denk doch mal drüber nach, welche Bedeutung ' in der Shell hat. Wenn Du das weisst, wirst Du " statt ' nehmen ;) Das kannst Du in diesem Fall machen, weil in der Expression keine weiteren, von der Shell interpretierte Zeichen sind. Würdest Du nach z.B: %preun$, also %preun am Zeilenende, suchen, ginge das so nicht, weil die Shell nach $ einen Variablennamen erwartet. Dann wäre sed -e 's/\%preun/'${mailtoroot}'/g' nötig. -- Gruss Bernd