Hallo, Am Sat, 04 Mar 2006, Martin Ereth schrieb:
David Haller schrieb:
Am Fri, 03 Mar 2006, Martin Ereth schrieb:
Meine Lösung:
#!/bin/sh for file in big/*.[j,J][p,P][g,G]
Verraetst du uns, was die Kommata in den [] sollen?
Jeder Ausdruck in den eckigen Klammern steht für einen Buchstaben,
Ja.
das Komma trennt die möglichen Buchstaben.
Nein! Das ganze gilt uebrigens nur fuer die bash und teilweise anderen Bourne- oder POSIX kompatible Shells, die pdksh, csh und zsh kennen wohl keine Klassen (s.u.). Dafuer koennen die (teilweise) andere Substitutionen... In [] haben (bei der bash) NUR "!", "^", "-", "[" und "]" eine Sonderbedeutung und das auch nicht an jeder Stelle. ==== man bash ==== [...] Matches any one of the enclosed characters. A pair of characters separated by a minus sign denotes a range; any character lexically between those two characters, inclusive, is matched. If the first character following the [ is a ! or a ^ then any character not enclosed is matched. A - may be matched by including it as the first or last char acter in the set. A ] may be matched by including it as the first character in the set. ==== Zeichen- und Aequivalenzklassen lass ich mal weg, das ist die (einzige) Sonderbedeutung von "[" innerhalb der [], eben eine solche Klasse einleitet, genau dann, wenn nach dem "[" ein ":" oder "." folgt.
Du willst mir damit wohl sagen, dass die Kommas unnötig sind?
Ja. Denn auch ein Komma hat in [] keinerlei Sonderbedeutung. -dnh -- "Considering the number of wheels Microsoft has found reason to invent, one never ceases to be baffled by the minuscule number whose shape even vaguely resembles a circle". -- unknown, but _very_ sharp