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