Hallo Michael, * Michael Rolli schrieb am 21.Apr.2002: Erst mal zum Subjekt. Die bash selber kann kein regexp wie man es gewohnt ist. Dazu müßte man sed oder anderes aufrufen. Die bash kann nur das, was man auch bei der Dateierweiterung kennt, denn das ist schließlich auch die bash. Für die bash ist z.B . ein ganz normales Zeichen, wenn man davon absieht, daß es bei Dateien anders behandelt wird, wenn es das erste Zeichen ist. * steht für beliebig viele beliebige Zeichen und nicht für beliebig viele Zeichen des vorherigen Zeichens wie sonst bei regexp.
Ich programmiere grade ein kleines Skript und habe da eine Stelle, wo ich nicht weiterkomme:
if [ "$test" != [A-Z] ]; then $test="#"; fi
In $test befindet sich jeweils der erste Char eines Strings (per cut ausgelesen), also A oder 4 oder %. Ich möchte nun testen, ob es sich nicht um einen Buchstaben aus A-Z handelt. Wenn es sich nicht um A-Z handelt, soll # in die Variable. Aber obiger Syntax führt nicht zum Erfolg.
Was jetzt? Du sagst, in $test steht ein Sting. Wenn da zum Beispiel FOO drin steht, dann ist es aber ungleich [A-Z], da es aus mehr als ein Zeichen besteht. Was Du meinst ist wohl [A-Z]* Hierbei braucht nur das erste Zeichen aus der Menge A-Z zu sein, alle anderen Zeichen sind egal. a-z ist natürlich nicht eigeschlossen. Bernd -- Bei Fragen an die Liste erst mal nachschauen, ob es diese Frage nicht schon einmal gegeben hat. Ein Archiv der Liste findest Du auf: http://lists.suse.com/archives/suse-linux |Zufallssignatur 7