Use a shell script if: * . . . the target environment is spartan and will not have a decent scripting language. This may include simple program installers ** Then again, how many Unixes don't at least have perl4 these days? ** Nooo! This is exactly the wrong reason to use a shell script. Shell scripts are ''shit'' in spartan environments where there are few programs to use in the script. * . . . the problem requires use of many different programs but little symbolic or computational stuff. Use a ScriptingLanguage if: * . . . the script is at all likely to grow to more than a few lines, please use a scripting language. Shells primitive control and data structures become serious handicaps in anything much larger. * If you need any kind of data structures. And, to go both ways, you can always use SchemeShell... ''Shells have one vastly superior control structure over most other languages: pipes. Data structures ''are'' quite nasty in the standard unix shells, however, and even ones that do provide arrays (e.g. bash) provide a rather nasty syntax for it. Even bash has refused to evolve to contain primitives for sophisticated string handling such as matching and substituting, and shelling out to grep and sed (with their incompatible syntaxes and all) is hardly a substitute.'' Correct me if I'm wrong, but aren't most full-fledged scripting languages capable of handling pipes pretty much the same way as Shell Script languages? Perl, for instance? There are pipe libraries for popular dynamic languages like Ruby and Python, and are convenient due to OperatorOverloading. Nevertheless they pretty much avoid the need for piping random programs together due to their rich standard libraries.