what's going on here? i don't understand why these two functions behave 
differently.

$ cat ./nameref 
#!/usr/bin/env ksh
set -e
set -u

print ${.sh.version}

function dumpParams # array
{
    set -eu
    nameref a=$1
    shift
    nameref v
    print '--- works'
    for v in "${a[@]}"
    do
        print "${!v}=$v"
    done
    print '---'
}

function dumpParams2 # array
{
    set -eu
    nameref a=$1
    shift
    nameref v
    print '--- doesn'\''t work'
    for v in "${a[@]}"
    do
        print "${!v}" = "$v"
    done
    print '---'
}

foo=1
bar=2
baz=3
array=(foo bar baz)

dumpParams  array
print
dumpParams2 array
$ ./nameref 
Version AJM 93u+ 2012-08-01
--- works
foo=1
bar=2
baz=3
---

--- doesn't work
foo = 1
bar = 1
baz = 1
---
$ 
-- 
Aaron Davies
[email protected]

_______________________________________________
ast-users mailing list
[email protected]
http://lists.research.att.com/mailman/listinfo/ast-users

Reply via email to