# This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # # 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 var=abcde x=var declare -n v=var # these two should display the same echo ${!x//c/x} echo ${v//c/x} for testfile in ./nameref[0-9].sub ./nameref[1-9][0-9].sub ; do ${THIS_SH} "$testfile" done