Hallo, Am Mon, 15 Mär 2010, Christian Brabandt schrieb:
Das könnte ein Bug in der bash sein: Das hier funktioniert nicht wie gewünscht for i in *.tif; do rm -i -f -- "${i//%.tif/.jpg}"; done
während das hier funktioniert: for i in *.tif; do rm -i -f -- "${i/%.tif/.jpg}"; done
Das scheint eh ein neues Feature der bash zu sein, weil ich zumindest bisher noch nichts davon gelesen habe, dass man % bzw # bei Pattern substitution benutzen darf. (% erzwingt ein Match am Ende, # am Anfang). Kann natürlich auch sein, dass es bisher einfach nicht vorgesehen ist, Parameter Substitution mittels %/# zu verwenden.
Das gibt's mind. seit: $ bash --version GNU bash, version 2.03.0(1)-release (i386-suse-linux) Copyright 1998 Free Software Foundation, Inc. ==== man bash Parameter Expansion [..] ${parameter/pattern/string} ${parameter//pattern/string} The pattern is expanded to produce a pattern just as in pathname expansion. Parameter is expanded and the longest match of pattern against its value is replaced with string. In the first form, only the first match is replaced. The second form causes all matches of pattern to be replaced with string. If pattern begins with #, it must match at the beginning of the expanded value of parameter. If pattern begins with %, it must match at the end of the expanded value of parameter. ==== AFAIK ist das sogar portabel (POSIX). Achso: Korrekt dürfte "${datei/%.tif/.jpg}" sein. HTH, -dnh -- Wir Aliens wir müssen doch auf euch arme Menschlein aufpassen. Sonst macht Ich noch den grossen Blubb mit euerer Welt. [WoKo in dag°] -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org