Can't figure out recursion problem in bash/freebsd - reply/solution to all helpers

Bernard T. Higonnet bth at
Fri Jan 8 10:23:11 UTC 2010


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
     cd ..
     echo Processing file $hoo
   echo Going to next item
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