Can't figure out recursion problem in bash/freebsd -
reply/solution to all helpers
Bernard T. Higonnet
bth at higonnet.net
Fri Jan 8 10:23:11 UTC 2010
Hello,
There were two approaches offered to my problem
1) changing my script: it runs if the "cd .." is moved from the end of
the script into the then clause of the if statement
===============
#! /bin/sh
echo Starting in `pwd`
for hoo in *; do
echo Found item $hoo
if [ -d "$hoo" ]; then
echo Pushing $hoo
cd $hoo
$0
cd ..
else
echo Processing file $hoo
fi
echo Going to next item
done
echo Finishing in `pwd`
# cd .. was here in original script
===============
I shall be bold: this strikes me as a bug in bash. Am I off my nut here?
2) use find instead for the traversing of the file hierarchy
===============
find $PWD -type f -execdir processingscript {} \;
===============
I have tried both methods and on a small sample (10,000 files going only
3 deep) and there were no meaningful differences in execution time.
Thanks to all
Bernard Higonnet
More information about the freebsd-questions
mailing list