Date: Sun, 14 Sep 2003 03:28:05 -0700 (PDT) From: Mark Terribile <materribile@yahoo.com> To: freebsd-questions@freebsd.org Cc: Denis <intraden@mail.ru> Subject: Re: SHELL scripts..... HOW TO START LEARN???? Message-ID: <20030914102805.978.qmail@web21108.mail.yahoo.com> In-Reply-To: <20030913164554.EE50216A4E5@hub.freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
Denis, > Do you happen to know where is some helpful > information about SHELL > programming??? Others have posted some fine references; I'd like to belabor you with a piece of experience: There is a difference between writing shell scripts and writing shell programs. o A script is a series of commands as you might enter them at the keyboard. o A program is a sequence of commands that are composed with the same care that one would (or should) employ when programming in other languages; care regarding the ability of someone else to read and understand the program; care regarding one's own ability to read and understand it six months, or sixty months, later; care that inputs are validated and variables are used consistently, etc. Since shell programs invoke shell commands and pipelines, and since commands and pipelines of commands all use different argument syntaxes, it's very important to make sure that the person trying to read the overall flow doesn't get lost in the minutia. This requires that program organization be at least as good as the organization of a C or C++ program ten times the size of the shell program. Keep related computations together in groups, just as you put related sentences in order in a paragraph. It also requires more attention to naming what you are doing. If you have a pipeline constructed with arcane commands to do subtle and magical things, put it in a shell function and name it clearly. (If your shell does not support functions, switch to one that does. I like ksh , but bash is good too.) Use functions freely and test them independently of each other. (It's easier in the shell than in most programming languages.) Since most shells do not support structured data, you cannot use structs (or records, or classes) to describe your data layout. Comment your data accurately. This does not necessarily mean profusely. When you use a new variable in a function scope, use whatever the shell gives you to make sure that you are using a local instance, and not writing over a variable in an outer (dynamic) scope. There's lots more, but this will get you started. Mark Terribile __________________________________ Do you Yahoo!? Yahoo! SiteBuilder - Free, easy-to-use web site design software http://sitebuilder.yahoo.com
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20030914102805.978.qmail>