# 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 . # foo() { local -a myvar=() local -r myvar=0 echo "${myvar[@]}" declare -p myvar } foo2() { local -i myvar=0 local -r myvar=1 echo "${myvar}" declare -p myvar } declare -a outside=() declare -r outside declare -p outside outside1=1 declare -ir outside1 declare -p outside1 tempenv=foo declare -r tempenv echo tempenv = $tempenv foo foo2 tempvar1=foo declare -r tempvar1 echo ${tempvar1@A} tempvar2=bar declare -r tempvar2=qux echo ${tempvar2@A} unset foo readonly var=outside func() { local var=inside echo "inside: $var" } func echo outside: $var unset -f f unset VAR1 VAR2 export VAR1=abc VAR2=abc f() { local VAR1; local VAR2 echo local: ${VAR1-unset1} ${VAR2-unset2} printenv VAR1 ; printenv VAR2 } f