sed Resultat in Variable speichern

H

hunzimar

Grünschnabel
Hallo zusammen

Ich versuche das Resultat der folgenden Zeile in einer Variable zu speichern und auszugeben:
Code:
a="/a/b/c/d/e/f.mov"|sed 's!.*/ \(.*\)/.*!\1'
echo $a

Leider funktioniert dies nicht undich sehe nicht, warum!
Hat jemand eine Idee?!

Besten Dank!
 
Hi,

ich denke du solltest dich noch ein wenig in die Grundlagen von Shell Skripten einlesen, das kann ja auch von vorne bis hinten nicht funktionieren.

Gehen wir das mal schnell der Reihe nach durch:

1. "/a/b/c/d/e/f.mov" ist kein Befehl, sed bekommt keinen Input. Setze ein echo davor.

2. Die sed Ersetzung ist nicht terminiert, das Abschlusszeichen nicht vergessen (! in deinem Fall).

3. Du moechtest das Ergebnis der Ersetzung haben, also musst du das ganze erstmal auswerten lassen, indem du es in einer Subshell laufen laesst. $() ist dein Freund.

Code:
a="$(echo foo | sed 's$foo$bar$')"

Edit:
Ach so, ja, ! geht natuerlich nicht weil das eine spezielle Bedeutung fuer die bash hat, nimm stattdessen $.

mfg,
bytepool
 
Zuletzt bearbeitet:
ok, Danke. Funktioniert so. habe eben erst wiedermal begonnen ein Shell Skript zu schreiben...

mfg
 
Kein Problem. :)

Eine kleine Randnotiz haette ich noch. "Das funktioniert nicht" ist keine adaequate Fehlerbeschreibung, in der Zukunft waere es hilfreich wenn du auch direkt die komplette Fehlermeldung mit angeben wuerdest. Das erhoeht, gerade bei nicht-trivialen Problemen, deine Chancen Hilfe zu bekommen.

mfg,
bytepool
 

Ähnliche Themen

Switche abfragen über Script

sed - Bitte um Unterstützung

Hilfe für ein shell script

Falsche Ausgabe von $LINENO

sed in awk

Zurück
Oben