Ich habe ein Skript, das ein paar Variablen enthält. Einer davon ist ein proprietärer Pfad MYPATH.
Ich möchte die Ausgabe von MYPATH speichern und dann eine andere Variable SOME_OTHER_PATH mit dem gleichen Wert ersetzen.sed: Ausgabe speichern und ersetzen
Aktuelle Eintrag in myfile.sh
MYPATH="/opt/local/custom/myfiles"
SOME_OTHER_PATH=""
Ausgabe, die ich
MYPATH="/opt/local/custom/myfiles"
SOME_OTHER_PATH="/opt/local/custom/myfiles"
Das Skript will, dass ich tue dies
mylocalpath=`sed -n /^MYPATH/p' myfile.sh | sed -e 's/MYPATH/'`
sed -i -e "s/^SOME_OTHER_PATH/${mylocalpath}" myfile.sh
Es gibt zwei Probleme geschrieben hier
- Seit
${mylocalpath}
enthält „/“, sed versuchen, diese zu bewerten und löst eine Ausnahme Ich mag würde das gesamte Skript in einer sed-Datei (statt Laufe sed zweimal) und führen Sie es als
bündelnsed -f sed_file myfile.sh
Für Problem # 1, siehe [diese Antwort in Bezug auf entweichende Zeichen für sed] (http://stackoverflow.com/:
Um eine "in-place" bearbeitet, nur eine temporäre Datei verwenden ausführen a/29613573/2877364) – cxw