Veröffentlicht 20. Oktober 200420 j in der Variable "backupdir" ist folgender String gespeichert: --backup-dir=$zdir/../backup$datum/ in der Variable "zdir" : /home/just2blue4u/synctest/dir-2/ hier schicke ich den Inhalt an sed, wo dann die Stelle "$zdir" durch den Inhalt der Variable "zdir" ersetzt werden soll: echo $backupdir | sed 's/$zdir/\($zdir\)/g' >> options.tmp das ist falsch, denn in der options.tmp steht nach dem Schreiben: --backup-dir=($zdir)/../backup$datum/ Ich hab schon alles mögliche ausprobiert, komme aber einfach nicht auf die richtige Schreibweise! >> wer kann mir helfen? << :confused:
20. Oktober 200420 j Du benutzt single quotes ('), da werden Variablen nicht expandiert. zdir=blubb && echo '$zdir/bbbb' | sed -e 's/\$zdir/$zdir/' $zdir/bbbb zdir=blubb && echo '$zdir/bbbb' | sed -e "s/\$zdir/$zdir/" blubb/bbbb Wie du siehst geht es aber bei doublequotes, wobei du dann das erste $ escapen musst damit es da als $ steht, und nicht expandiert wird.
20. Oktober 200420 j hab das jetzt so: echo $backupdir | sed -e "s/\$zdir/$zdir/" >> options.tmp Ergebnis: $zdir = /home/just2blue4u/synctest/dir-2/ /home/just2blue4u/synctest/dir-2/ = /home/just2blue4u/synctest/dir-2/ sed: -e Ausdruck #1, Zeichen 10: Unbekannte Option betreffs `s' ... und nun? wenn ich das script mit sh -x ausführe kommt: + sed -e 's/$zdir//home/just2blue4u/synctest/dir-2//' ... der Inhald der Var wird also schon eingefügt. Was ist das denn jetzt was den Fehler schmeisst? THX schonmal für die Hilfe!
20. Oktober 200420 j Du benutzt in deinen Variablen Slashes (/) und ebenso als Trenner für dein sed - das geht natürlich in die Mauer. Benutz statt sed -e "s/.../.../" mal sed -e "s#...#...#"
20. Oktober 200420 j ich muss in sed ein anderes Zeichen für "/" nehmen, weil er sonst den "/" aus der Variable als trennzeichen interpretiert... der debug-modus der shell wirkt wunder! ^^ danke aber nochmal für deinen Hinweis!
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.