* Akim Demaille wrote on Wed, Sep 28, 2005 at 01:36:11PM CEST:
> 
> Thanks, I didn't know.  How about this then?

> (
>     foo=bar
>     test_local () {
>         local foo=foo
>     }
>     test_local
>     test $foo = bar
> ) || local () {
>     case $1 in
>         *=*) eval "$1";;
>     esac
> 
> }

That does not test what you'd like to know (if local doesn't work in
test_local, foo won't be reassigned), and the logic is wrong.

I believ you can even fail if you know you can't handle the assignment
(and you also don't want to see the test failure):

(
    test_local () {
        #set -x
        local lfoo=foo 2>/dev/null
        foo=$lfoo
    }
    test_local
    test -n "$foo"
) || local () {
    case $1 in
        *[$IFS]*)
             echo "local assignments with white space not implemented" >&2
             exit 1;;
        *=*) eval "$1";;
    esac
}

Tested with Solaris 9 sh and dtksh (the latter does not have `local').
But why not allow `local a=b c=d'?

Cheers,
Ralf


_______________________________________________
http://lists.gnu.org/mailman/listinfo/libtool

Reply via email to