So the problem I am having is recursion with in bash. Specifically the program ideally takes either the current or provided directory, lists out everything in that directory, if it finds another directory the script should call itself and go into that directory. I managed to get it to dive into the next working directory with this code:
list=`ls`
for l in $list
if [ -d $l ] ; then
cd $l
echo "I'm in $l"
dir=`pwd`
cd ../
bash script.bash $dir
fi
done
My thinking proccess behind this was that it dives into that directory, states it's in there, gets the full path of that directory and stores it in a variable, get out of that directory to were the bash script is, then passes the created variable into the script. I was hoping that the bash script would then dive into the specified directory and do the same thing but it doesn't sadly.
Sorry, the issue is that the code doesn't work as I want it to work. I don't quite understand how to recurse through the directories using a bash script, what the code I posted above does is it dives into the next directory, says it's in there, jumps out, and does it again for the next directory in the list. What it DOESN'T do is, go the extra mile like it's supposed to and recurse through the entire directory tree, like say it finds dir Test/, it dives inside, gets the full path, dives out, then calls itself with Test/ as its calling directory, then it's supposed to find all the dirs in there like Test1/, and repeat the process. I have a hard time explaining things sometimes so forgive me.
Comment on the original code.
You don't make use of $1 parameter so don't need $dir
Indeed you can use the inheritance of the current work directory - but you need to change it before the recursive call.
So do not restore it i.e. do not cd .. (you may but not need to do cd .. afterwards)