Sed Variablen, die Leerzeichen enthalten ersetzen

Post Reply
Message
Author
Felix-2004

Sed Variablen, die Leerzeichen enthalten ersetzen

#1 Post by Felix-2004 »

Mahlzeit

ich dreh noch durch ich will folgendes in meinem Script machen

ich hab eine Konstante QUELL_PFAD in meinem Bash Script die ich mit einer Funktion zur Konfiguration der Variablen dauerhaft ändern will.

Benutzer gibt Pfad ein. Wenn nichts eingegeben wird dann bleibt er unverändert.
Nun soll die Zeile mit der Konstante per sed geändert werden.

Code: Select all

echo -e -n "\nGeben Sie einen Pfad an .\nAktueller Pfad [$QUELL_PFAD] "
read -e benutzer_eingabe
if [ -n "$benutzer_eingabe" ]; then $(cat $0 | sed "s?QUELL_PFAD=${QUELL_PFAD}?QUELL_PFAD=${benutzer_eingabe}?" > $0t); fi 
Die normalen / in sed hab ich durch ? ersetzt.
Es funktioniert alles bis auf das ersetzen der Zeile.
P.S. Es muss auch ein Verzeichniss mit Leerzeichen angegeben werden können

Kann mir da BITTE jemand helfen???? DANKE

mfg Felix

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

#2 Post by jochen »

Da hast Du aber von hinten durch die Brust ins Auge gearbeitet...

Entweder QUELL_PFAD ist eine Konstante, dann wird sie nicht verändert, oder aber es ist eine Variable, dann kann man sie ändern. Dazu reicht schon

Code: Select all

if [ -n "$benutzer_eingabe" ] ; then
    QUELL_PFAD="$benutzer_eingabe"
fi
Wenn Du jetzt zwischen Aufrufen des Skriptes immer den zuletzt eigegebenen Pfad speichern willst, dann mache es über eine kleine Datei, in der nur

Code: Select all

QUELL_PFAD=irgendwas
drinne steht. Zum Ende Deines Skripts kannst Du mittels

Code: Select all

echo "QUELL_PFAD=$QUELL_PFAD" > .quellpfad
den jetzt gültigen Wert merken und bei Start des Skriptes diese Datei sourcen:

Code: Select all

. .quellpfad
echo $QUELL_PFAD
Wobei das echo nur als Anschaunugsbeispiel dient, um zu zeigen, dass jetzt die Variable QUELL_PFAD gesetzt ist.

Selbstmodifizierende Programme sind böse... :P

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

Felix-2004

#3 Post by Felix-2004 »

Naja dann mach ich das eben so. ThX

Is gutes Argument mit selbstmodivizierende Scripts.

Aber wieso ist das keine Konstante. Ich mein im normalen Programmablauf wird sie ja nicht geändert.
Nur wenn ich ":~#script.sh -c" zum konfigurieren mach.

Post Reply