Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Shouldn't readonly (-r) prevent type changes?



When a parameters is read-only (-r), it's value can't be changed, not even with a typeset:

% () { typeset -r var=1; typeset var=2 }
(anon): read-only variable: var
% () { typeset -r -i var=1; typeset -i var=2 }
(anon): read-only variable: var
% () { typeset -r -a var=(1); typeset -a var=(2) }
(anon): read-only variable: var


Shouldn't that restriction extend to type changes?

% () { typeset -r var=1; typeset -i var=2; typeset -p var }
typeset -ir var=2
% () { typeset -r -i var=1; typeset +i var=2; typeset -p var }
typeset -r var=2
% () { typeset -r -i var=1; typeset -a var; typeset -p var }
typeset -ar var=(  )
% () { typeset -r -a var=(1); typeset -i var; typeset -p var }
typeset -ir var=0


Bash seems to forbid all type changes for read-only parameters, while ksh prevents most, sometimes without any error message, and allows some like "typeset -r -i var; typeset -a var", which creates a read-only array of integers.

Philippe



Messages sorted by: Reverse Date, Date, Thread, Author