# basic nameref tests bar=one flow=two flip=three foo=bar typeset -n foo typeset -n fee=flow echo ${foo} echo ${fee} typeset -n fee=flip echo ${fee} typeset -n echo turning off nameref attribute on foo typeset +n foo=other echo ${foo} echo after +n foo bar = $bar unset foo bar fee bar=one foo=bar typeset -n foo foo=two printf "%s\n" $foo foo=two eval 'printf "%s\n" $foo' foo=two echo $foo unset foo bar # other basic assignment tests bar=one echo "expect " recho ${bar} typeset -n foo=bar foo=two echo "expect " recho ${bar} # this appears to be a ksh93 bug; it doesn't unset foo here and messes up # later unset foo bar # initial tests of working inside shell functions echoval() { typeset -n ref=$1 printf "%s\n" $ref } foo=bar bar=one echo "expect <$foo>" echoval foo echo "expect <$bar>" echoval bar unset foo bar changevar() { typeset -n v=$1 shift v="$@" echo "changevar: expect <$@>" recho "$v" } bar=one echo "expect " recho ${bar} changevar bar two echo "expect " recho $bar changevar bar three four five echo "expect " recho "$bar" unset foo bar unset -n foo bar readonly foo=one typeset -n bar=foo bar=4 foo=4 echo $foo echo $bar assignvar() { typeset -n ref=$1 shift ref="$@" } readonly foo=one assignvar foo two three four echo $foo ${THIS_SH} ./nameref1.sub ${THIS_SH} ./nameref2.sub ${THIS_SH} ./nameref3.sub ${THIS_SH} ./nameref4.sub ${THIS_SH} ./nameref5.sub ${THIS_SH} ./nameref6.sub ${THIS_SH} ./nameref7.sub ${THIS_SH} ./nameref8.sub