Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Re: Recursion and shell functions



On 10 Oct, you wrote:

>     First of all, please excuse this a-bit-off-topic question, but I
> need to know if a feature available in zsh is portable.
> 
>     I need to do recursion in a directory tree and have two options;
> first one is doing a 'for' loop recursively calling the shell
> function which performs the actions:


> setting the permissions. This may seems unreasonable (two
> recursions...) but it's necessary since the recursive function call
> overwrites local variables, and I *cannot* set them as local, since
> 'local' is not a portable keyword :((( I need 

If you know that you will at least have ksh88, you can get local
variables by using the function name { ... } syntax for functions and
using typeset to declare variables.

The bourne shell doesn't have local variables except for the
positional parameters and you can use them. I think this will be
portable:

func() {
  set *
  while [ "$1" ]; do
    if [ -d "$1" ]; then
      cd $1
      func
      cd ..
    fi
    shift
  done
}

Something like find is going to be more reliable though.

Oliver

This e-mail and any attachment is for authorised use by the intended recipient(s) only.  It may contain proprietary material, confidential information and/or be subject to legal privilege.  It should not be copied, disclosed to, retained or used by, any other party.  If you are not an intended recipient then please promptly delete this e-mail and any attachment and all copies and inform the sender.  Thank you.



Messages sorted by: Reverse Date, Date, Thread, Author