Path: utzoo!utgpu!water!watmath!clyde!att!osu-cis!tut.cis.ohio-state.edu!mailrus!ames!pacbell!sactoh0!tree!stever From: stever@tree.UUCP (Steve Rudek) Newsgroups: comp.unix.wizards Subject: Bourne shell programming questions Keywords: sh Bourne programming environment hash books Message-ID: <120@tree.UUCP> Date: 14 Oct 88 18:23:03 GMT Organization: TREE BBS (916)-349-0385 Sacramento, Ca Lines: 35 Although I've got access to a number of books on shell programming, I've yet to find any rigorous, comprehensive text on shell programming; that would be okay if I could even find an excellent *combination* of texts. _The UNIX Programming Environment_, by Kernighan and Pike, is a very good book but it is not *nearly* comprehensive enough (for example, it only mentions the "eval" command in a "Hint" and it doesn't discuss named procedures at all!). I think the lack of decent sh documentation is a shame. I've found that most UNIX "wizards" are actually only "C" wizards and have basically missed the boat with regard to what (in my opinion) UNIX is all about! Shell script is an immensely powerful 4th GL but most folks treat it like it is just a run-of-the-mill JCL and only use it for short utility programs. Anyway, enough of that; I actually wanted to ask a couple of questions! (1) I'm making extensive use of *very long* environment strings (using expr to build and strip them of "field" information). I'm also using lots of named procedures and, in some occasions, calling them *recursively* (neat trick, that!). I'd like to expand the use of memory variables since it reduces the need for disk access. How much variable space do I have to play with? Is this defined or at all standardized across machines? (2) As I see it, the secret to writing interactive programs in shell script is to reduce disk access time to a minimum. There is a "hash" command defined for shell which is scantily described in man. Man indicates that it can be used to "remember" the exact path to given commands and, thus, reduce the overhead of calling external programs? As usual, the sh documentation gives no example. Well, perhaps for this command no documentation should be needed -- but I've "time"d scripts with and without use of this command and found no execution time difference. Comments? P.S. I've got access to a korn shell. How transportable are bourne scripts and is korn sufficiently more advanced (as a programming language) to make it worth my while to switch?