[vox-tech] Shell Scripting Question

Peter Jay Salzman vox-tech@lists.lugod.org
Fri, 6 Jun 2003 10:37:04 -0700


richard,

ever since i learned perl a year or two ago, i literally haven't touched
shell scripting other than reading other people's scripts, so i'm a bit
rusty, however, i think bourne style conditionals have the form:

if [ condition ]
then
do something
fi

or:

if test condition
then
do something
fi


afaik, perl/php C-style conditional's aren't part of bash's syntax.

references:

o'reilly's bash shell scripting is an excellent, excellent reference.

the only thing which rivals it is wiley's "unix shell programming" which
has the benefit of showing you how to do it in bourne style scripting
and csh style (for those who are unfortunate enough to be stuck in csh
for some ungodly reason).

also, kernighan and pike's "unix programming environment" is my favorite
(ironically, i may have this title wrong because i loaned my copy to a
friend) and is what i learned bourne scripting from.

the last two references are very good, but don't include bashisms, like
the string handling stuff that's so powerful.  however, i've found that
"man bash" is great for people who know bourne but don't know bash.
conversely, i wouldn't want to actually learn basic bourne scripting
from the man page.

the 1st and 3rd references are available from nerdbooks.  not sure about
the 2nd.

if i got something wrong, i'm sure someone will mention it.  :-)

hth,
pete



On Fri 06 Jun 03, 10:28 AM, Richard Crawford <rscrawford@mossroot.com> said:
> I have a script to chmod all of the files of a given name to 777, no
> matter where they lie in the directory tree:
> 
> 
> ################################################
> 
> find . -name $1 -print | while read i do
>   chmod 777 $i
>   echo "Modified: $i"
> done
> 
> ################################################
> 
> Now what I need it to do is to go into only those directories called
> "messages" and do the same thing to files in those directories.  I tried
> passing "messages/*" to $1 but, of course, that didn't work.  I've also
> tried adding a conditional, "if (grep "\/messages\/" $i)", to the script,
> but that, of course, didn't work either.
> 
> I've Googled for various scripting tutorials, but none of them seem to
> cover this particular issue, which is kind of time-sensitive.
> 
> Any suggestions would be greatly appreciated!

-- 
GPG Instructions: http://www.dirac.org/linux/gpg
GPG Fingerprint: B9F1 6CF3 47C4 7CD8 D33E 70A9 A3B9 1945 67EA 951D