Ksh-ish functionality on Unix systems

Greg Weeks weeks at vitus.scs.agilent.com
Sun Sep 23 21:07:01 EDT 2001


Quinn Dunkan (quinn at retch.ugcs.caltech.edu) wrote:

: Or you could turn around and try a set of pure python plumbing classes that
: wrap up all the nasty pipe() and fork()iness; it sounds like a fun project.

That is tempting.  But for some tasks it really is simpler to create a new
language.  The "re" module is an example.  It think it would be
significantly more awkward if a regular-expression was an abstract data
type with a bunch of methods for creating the desired state.  Better in
this case to create a little language and scan/parse it.

And such, I have tentatively guessed, is also true for process invocation
and redirection.  And, since os.system does invoke "sh", that pretty much
handles the problem that I raised in the basenote.  All the functionality
that I said I wanted is in os.system or commands.getoutput.  So, basically,
Python already had the problem handled in a reasonable way.  Good!


Regards,
Greg


PS: There is more to the story at my end, though.  I would like a version
of os.system that throws an exception if the command fails.  In addition, I
would like the command to fail if any subcommand fails.  (In shell language
this is "set -e".)  So I wrote a little function with the above properties.
Unfortunately, I found that "sh" on HP-UX has a bug: "set -e" doesn't work
with the -c option.  So, with regret, I invoked ksh instead.



More information about the Python-list mailing list