PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : BASH: Variablenfiltern klappt nicht?!



qeldroma75
20.10.03, 10:56
Hallo zusammen,
bitte verweist mich nihct an "mrunix.de", da ist einfach zu wenig los um Hilfe zu bekommen.

Also:
In KSH und BASH kann man Strings inline filtern, z.B. aus dem String
test="mein doofer Adler" kann man auf folgende Art "mein Adler" machen:


echo ${test#d*er}

Klappt aber net.
Bei mir gibt er anschließend den kompletten String wieder. Veränder ich den Filter zu etwas hin, was nicht enthalten ist, bekomme ich gar keine Ausgabe.

Das ganze verhält sich bei mir wie ein grep auf die gesammte Zeile und nicht wie ein Filter auf einzelne Ziffern?!

Der Gestreifte
20.10.03, 11:37
Korrigiert mich, aber AFAIK kannst Du mit der "'#", "##", "%" und "%%" "Mustervergleich-Variablensubstitution" nicht so einfach etwas aus der Mitte eines einer Variable rauschneiden, da immer nur der längere oder kürzere Teil des Strings zurückgegeben wird.
Alternative wäre "awk" oder "cut" oder einfach
maddin@captin:maddin$ VAR="niemals test nennen"
maddin@captin:maddin$ echo ${VAR/test/}
niemals nennen
Siehe manpage zur bash, "Parameter Expansion" - wenn ich nicht irre.

qeldroma75
20.10.03, 13:07
Klasse!

Das mit dem ${blabla/regexp/} ist die Lösung. Wo finde ich den eine anständige Doku zu den ganzen ${..} Sachen? Der "BASH-guide" hier irgendwo im Internet war jedenfalls nicht das Wahre und das HOWTO ist zu knapp. Auf der BASH-Homepage kam ich mit dem Index nicht so ganz klar, denn wie weiß man den Begriff zu etwas, was man machen möchte, wenn man es noch nicht kennt :D