On 10/14/2005 3:24 PM David Kirchner wrote:

On 10/14/05, Drew Tomlinson <[EMAIL PROTECTED]> wrote:
OK, I've been working on an sh script and I'm almost there.  In the
script, I created a 'while read' loop that is doing what I want.  Now I
want to keep track of how many times the loop executes.  Thus I included
this line between the 'while read' and 'done' statements:

count = $(( count + 1 ))

I've tested this by adding an 'echo $count' statement in the loop and it
increments by one each time the loop runs.  However when I attempt to
call $count in an 'echo' statement after the 'done', the variable is
null.  Thus I assume that $count is only local to the loop and I have to
export it to make it available outside the loop?  What must I do?

Oh yeah, that's another side effect of using the while read method.
Because it's "| while read" it's starting a subshell, so any variables
are only going to exist there. You'd need to have some sort of 'echo'
within the while read, and then | wc -l at the end of the while loop,
or something along those lines.

The IFS method someone else mentioned, in regards to 'for' loops,
would probably be better all around. So you'd want:

OLDIFS=$IFS
# Note this is a single quote, return, single quote, no spaces
IFS='
'

for i in `find etc`
do
done

IFS=$OLDIFS

OK, I've tried this and it does fix the "count" problem. However it messes up another part of the script and I'm trying understand why. I tried to make this script dynamic in that all I would need to do is edit variables set at the top and then not have to worry about all occurrences in the script. Thus I set the following variables:

remote_pictures_dir="/multimedia/Pictures"
local_pictures_dir="/tv/pictures"
find_args="-iname '*.jpg' -or -iname '*.gif'"

Then I called the 'find' command as follows:

for original in $(/usr/bin/find $remote_pictures_dir $find_args -print)

But when I run my script, I get "/usr/bin/find: invalid predicate `-iname '*.jpg' -or -iname '*.gif''". However if I don't try and use $find_args and type the arguments in specifically, the script runs fine. I tried various combinations of quoting and escaping those quotes but can't come up with a combination that works.

What is going on? And is there some way to set verbosity so I can see how the shell is expanding the variables?

Thanks much,

Drew

--
Visit The Alchemist's Warehouse
Magic Tricks, DVDs, Videos, Books, & More!

http://www.alchemistswarehouse.com

_______________________________________________
freebsd-questions@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-questions
To unsubscribe, send any mail to "[EMAIL PROTECTED]"

Reply via email to