Hallo, ich habe ein kleines Problem welches ich nicht verstehe. In der bash geht es, in der ksh net: Damit es in der Bash geht, habe ich erst mal extended globbing eingeschaltet: shopt -s extglob So nun zu meinem Problem: Ich versuche mittels folgenden Befehl mir alle Dateien anzeigen zu lassen, welche auf folgendes Muster passen: pierre@starflake ~ $ touch PRE.{102,343,342,1}.ext pierre@starflake ~ $ ls PRE.1.ext PRE.102.ext PRE.342.ext PRE.343.ext pierre@starflake ~ $ pt=102 pierre@starflake ~ $ echo PRE.!(${pt}).ext PRE.1.ext PRE.342.ext PRE.343.ext Bis hier her gehts auch so in der ksh. Nun aber folgendes: bash: pierre@starflake ~$ pt=102\|1 pierre@starflake ~$ echo PRE.!(${pt}).ext PRE.342.ext PRE.343.ext ksh: pierre@starflake ~$ pt=102\|1 pierre@starflake ~$ echo PRE.!(${pt}).ext PRE.1.ext PRE.342.ext PRE.343.ext Geht nicht. Jetzt mal ein Test: pierre@starcflake ~$ echo PRE!(102|1).ext PRE.342.ext PRE.343.ext Geht. pierre@starcflake ~$ touch PRE.102\|1.ext pierre@starcflake ~$ echo PRE.!(${pt}).ext PRE.1.ext PRE.342.ext PRE.343.ext pierre@starcflake ~$ echo PRE!(102|1).ext PRE.102|1.ext PRE.342.ext PRE.343.ext Aha. Das oder-Zeichen ist kein oder-Zeichen. Ich habe schon alles mögliche mit ausmaskieren versucht, aber keine Lösung gefunden. Auch eval funktioniert hier nicht, da eval gleich ne Pipe draus macht. Hat irgend wer noch eine Idee, da ich diese Möglichkeiten des Globbings sehr Hilfreich finde, aber leider das Tool, dem ich die Befehle unterjuble, diese nur an eine ksh weiter geben kann. Getestet ist es übrigens auf eine Debian Sarge mit bash 2.05b.0(1) und der AT&T ksh (Paket ksh). MfG... Pierre Bernhardt
Teilnehmer (1)
-
Pierre Bernhardt