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