zsh-workers
 help / color / mirror / code / Atom feed
From: DervishD <raul@pleyades.net>
To: Zsh <zsh-workers@sunsite.dk>
Subject: Recursion and shell functions
Date: Thu, 10 Oct 2002 21:41:54 +0200	[thread overview]
Message-ID: <20021010194154.GA10963@DervishD> (raw)

    Hi all :))

    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:

    function () {

        for item
        do
            if [ -d $item ]
            then
                do_some_action
                chmod u+w $item
                cd $item
                function           <-- Overwrites 'item', of course
                chmod u-w $item    <-- Oh-oh... $item is not as before...
                ...
            fi 
        fi
        ...
    }

    Second is using 'find' to do the proper operations, although I
don't want the piece of software dependent on 'find'. The problem is
if I can do recursion safely (well, portably), if it is supported by
POSIX (I can't find a word about it in SuSv3) or at least if it is
common practice: don't want to find a tiny non-interactive shell
failing because of this...

    Just in case you can help me, I need to copy a hierarchy from one
place to another (where some files can be already present) setting
permissions in the process. Other solution I'm considering is doing a
'cp -fpR' over the tree and after that the recursion above for
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 

    Suggestions welcome and thanks in advance :))

    Raúl


             reply	other threads:[~2002-10-10 19:43 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-10-10 19:41 DervishD [this message]
2002-10-10 19:44 ` DervishD
2002-10-10 20:02 ` Jason Price
2002-10-10 21:15   ` DervishD
2002-10-11  9:02 ` Oliver Kiddle
2002-10-11 11:05   ` DervishD
     [not found]     ` <E1802KE-0001g0-00@bimbo.logica.co.uk>
2002-10-11 18:27       ` DervishD

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20021010194154.GA10963@DervishD \
    --to=raul@pleyades.net \
    --cc=zsh-workers@sunsite.dk \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/zsh/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).