On Tue, Oct 13, 2009 at 11:18 PM, TerryP <bigboss1...@gmail.com> wrote: > On Oct 14, 2:13 am, Peng Yu <pengyu...@gmail.com> wrote: >> Bash is easy to use on manipulating files and directories (like change >> name or create links, etc) and on calling external programs. For >> simple functions, bash along is enough. However, bash does not support >> the complex functions. Python has a richer library that could provide >> support for complex functions (such compute the relative path between >> two paths). >> >> I'm wondering for a task that can not be done with bash along whether >> it would be better to do in pure python or with a mix of both python >> and bash. What I care is mostly coding speed and a little bit >> maintainability (but not much). Can somebody provide some experience >> on when to combine python and bash and when to use pure python? > > bash can **not** manipulate files and directories beyond things like > the '>' and '>>' I/O redirections, and some minor loading/saving of > state data from/to files (command history, directory stack, etc). Most > of what you refer to are **separate operating system specific > programs** and have absolutely nothing to do with the shell. > > Very sophisticated scripts are possible using bash and ksh, there is > even a form of ksh that has tk capabilities! (tksh). The Python and > Bourne-derived languages are however fundamentally different > creatures, and use very different data models. You should **not** > write Python (or Perl) scripts as if they were shell scripts -- doing > so is very bad practice. When you want a shell script, write a shell > script. When you write a Python script, write a Python script. It > really is that simple. > > > As a rule of thumb, when you have need of data structures beyond what > scalar strings and very simple word lists can provide -- you should > use Python. bash and ksh provide support for arrays, and ksh even has > dictionaries! (Hashes in Perl speak.) That makes programming in bash/ > ksh more robust then pure sh, but also less portable. The best time to > use bash is when you require bash specific features, other wise don't > use bash. The same can be said for ksh.
Do you know what are bash and ksh specific features? Is there a thing that bash/ksh can do but python can not do? > When the words array, dictionary, class, object, and/or using multiple > source files comes to mind when implementing a program - you probably > want to use Python, Perl, Ruby, or some other general programming > language, not a shell scripting language like bash. > > You should be cautious to avoid mixing bash and Python code in one > file. > > > > If maintainability is not a factor in what you are writing, then you > should probably not be writing code in any language unless it is the > language of Mathematics (and even then, maintainability is a wise > consideration). > > -- > TerryP. > Just Another Programmer. > -- > http://mail.python.org/mailman/listinfo/python-list > -- http://mail.python.org/mailman/listinfo/python-list