Hallo, Am Wed, 25 Feb 2004, Al Bogner schrieb:
Vermutlich denke ich viel zu kompliziert und hoffe hier einen simplen Tip für folgendes Problem zu erhalten.
Ein User gibt in einem Script als 2. Option einen Dateinamen an. Gültig sind aber nur Dateinamen mit bestimmten Erweiterungen, zB. .txt. Wird z.B. eine Datei .asc angegeben, soll eine Fehlermeldung kommen.
Mit basename kann ich keine Lösung erkennen und mit cut sehe ich auch keine direkte Lösung.
TMTOWTDI. for name in foo foo.asc foo.txt bar.txt; do test "x${name##*.txt}" = "x" && echo "$name: ok" done for name in foo foo.asc foo.txt bar.txt; do echo "$name" | grep -q '\.txt$' && echo "$name: ok" done for name in foo foo.asc foo.txt bar.txt; do test "x`basename \"$name\"`" != "x`basename \"$name\" '.txt'`" \ && echo "$name: ok"; done for name in foo foo.asc foo.txt bar.txt; do test "x`echo \"$name\" | sed 's/.*\(\.txt\)/\1/'`" = "x.txt" \ && echo "$name: ok"; done Das sind nur die Varianten (excl. perl) die mir grad so einfallen ;) Fuer die ist aber ".txt" auch gueltig. -dnh PS: Beachte, wie ich bei 'test' das "x" einsetze. -- Some things are utterly, utterly clue-resistant. The only answer is to kill them, repeatedly if necessary. -- Tanuki the Raccoon-dog