bash like expansion

Mike Meyer mwm at mired.org
Thu May 12 18:33:56 EDT 2005


"bill" <bill.pursell at gmail.com> writes:

> Consider the following:
>
> import os, commands
> os.environ['QWE']="string with foo"
> a = '$QWE  ${QWE/foo/baz}'
> b = commands.getoutput('echo ' + a)
>
>
> This does what I want, which is to expand
> a according to the standard bash expansion rules
> (so b now references "string with foo string with baz"),
> but it doesn't feel right.
>
> Is there a more pythonic way to interpret strings according
> to shell rules for word expansion?  Relying on commands
> feels like a kludge, and shlex is way too much work for this
> (not to mention that it doesn't really address the issue).

Well, if you really want shell rules, I think you're out of
luck. Espcially since those rules tend to vary depending on what shell
you're running. I don't think that even shlex will do what you want.
If you just want the simple cases you used in your example, you might
check out the Template module in 2.4.

      <mike
-- 
Mike Meyer <mwm at mired.org>			http://www.mired.org/home/mwm/
Independent WWW/Perforce/FreeBSD/Unix consultant, email for more information.



More information about the Python-list mailing list