On Son, Mai 27, 2001 at 09:13:23 +0200, Bernhard Walle wrote:
On Sun, 27 May 2001 at 19:58 +0200, Jan Trippler wrote: [...]
Die Umlaute werden mit
for i in *[A-ZÄÖÜ]* ; do mv $i `echo $i | tr [:lower:] [:upper:]` ; done
erwischt
dann schauen die Franzosen mit ihren Akzenten aber wieder recht dumm. Mal abgesehen von der Tatsache, dass man solche Sachen in Dateinamen möglichst *nicht* verwenden sollte, kannst Du nicht den ganzen latin1-Zeichensatz da reinpacken ;-)
Warum nicht? Das ist nur eine endliche Anzahl von Zeichen ;-) Nur aus Jux: Ich will natürlich nicht das ganze Geraffel aingeben, wozu haben wir denn die Shell! pattern=A-Z for i in `seq 161 255`; do oct=`printf "%c%03o" "\\\" $i` pattern=$pattern`echo -e "$oct"` done Dann ein gemütliches for i in *[$pattern]*; do ...
test -z "*[A-ZÄÖÜ]*" && exit 0
Geht nicht. Gerade dann wird ja der String nicht ersetzt sondern bleibt stehen => String ist nicht Null => geht nicht. Siehe:
Stimmt, ich hatte nur den Positivfall getestet. :-(
berwal@hugo:~/t/t > ls berwal@hugo:~/t/t > test -z "*[A-ZÄÖÜ]*" && echo "test" berwal@hugo:~/t/t >
Dafür geht folgendes:
test -z "`ls`" && exit 0test -z "`ls`" && exit 0
Du meinst: test -z "`ls`" && exit 0 (Deins kam doppelt an) Dann ist es aber einfacher, den ls direkt abzufragen: ls >/dev/null 2>&1 || exit 0 Das funktioniert aber nur, wenn der ls nicht mehrere Argumente kriegt und wenigstens eins davon finden soll. Er liefert nämlich immer 1, wenn er auf irgendein Argument hin keine Datei findet. Ah, gerade noch rechtzeitig eingefallen: test "*[A-ZÄÖÜ]*" = '*[A-ZÄÖÜ]*' && exit 0 weil nämlich in einfachen Quotes keine Substitution erfolgt. Jetzt gibt es nur noch Ärger, wenn es eine Datei gibt, die so wie das Suchmuster heisst - aber derjenige hat dann selber Schuld ;-) [test vs. []]
Mir gefallen die Klammern trotzdem besser ;-)
Denk doch nur mal an die Gefahren, die durch Verwechslung mit den von uns oben im ls oder tr genutzten Suchmustern oder in regulären Ausdrücken entstehen ;-) Heillose Verwirrung! Anarchie! Der Untergang des Abendlandes! Jan