Loesung: ksh und extglob in bash War: regex glob in shell
Pierre Bernhardt
pierre at starcumulus.owl.de
Sun Sep 3 12:02:55 CEST 2006
Pierre Bernhardt schrieb:
Moin,
entweder ist zu wenig Zeit vergangen oder meine Probleme
sind immer zu Speziell, so das mir keine helfen kann ;-)
> pierre at starcflake ~$ touch PRE.102\|1.ext
> pierre at starcflake ~$ echo PRE.!(${pt}).ext
> PRE.102.ext PRE.1.ext PRE.342.ext PRE.343.ext
Da ist mir beim Copy&Paste der 102er durch die Lappen gegangen.
> pierre at 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.
Ich habe es erst mal so gelöst, das ich eine temporäre Datei
erzeuge und diese dann in die ksh pipe:
set -f # Globbing ausschalten
# Befehl in Datei parsen
echo echo PRE.!(${pt}).ext >/tmp/echo.cmd.$$
set +f # wieder einschalten
cat /tmp/echo.cmd.$$ |ksh -s
Das ergibt dann in der Datei
echo PRE.!(102|1).ext
Die Ausgabe passt nun auch:
PRE.342.ext PRE.343.ext
Anschließend habe ich es dann auch ohne Datei mittels <(Befehl)
hinbekommen:
ksh <(set -f; echo echo PRE.!(${pt}).ext ; set +f)
PRE.342.ext PRE.343.ext
Naja, nicht ganz das wie ich mir es gedacht hatte, aber es
funktioniert.
> Getestet ist es übrigens auf eine Debian Sarge mit bash
> 2.05b.0(1) und der AT&T ksh (Paket ksh).
Ich habe nochmal nachgesehen: es ist der ksh93 Dialekt.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 290 bytes
Desc: OpenPGP digital signature
URL: <http://lug-owl.de/pipermail/linux/attachments/20060903/de195c59/attachment.sig>
More information about the Linux
mailing list