m=1 readonly m=4 declare -p m n=1 f() { readonly n=4; echo -n in func: ; declare -p n ; } f declare -p n p=1 readonly p readonly p=4 declare -p p r=(1) readonly r f() { readonly r=(4) ; } f declare -p r f() { readonly r='(5)' ; } f declare -p r f() { readonly -a r=(6) ; } f declare -p r f() { readonly -a r='(7)' ; } f declare -p r x=(1) readonly x=(4) declare -p x y=(1) f() { readonly y=(4); echo -n in func: ; declare -p y; } f declare -p y z=(1) f() { readonly -a z=(4); echo -n in func: ; declare -p z; } f declare -p z f() { readonly y1=(4); echo -n in func: ; declare -p y1; } f declare -p y1 f() { readonly -a z1=(4); echo -n in func: ; declare -p z1; } f declare -p z1