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

Re: Unsetting Array




On 09 Dec 2008, at 16:57, Stephane Chazelas wrote:

On Tue, Dec 09, 2008 at 02:18:34PM +0000, Peter Stephenson wrote:
"Jerry Rocteur" wrote:
I'm using ZSH_VERION 4.2.6 on Redhat 5 to test some Korn shell scripts.

Note that /usr/bin/ksh is a link to /bin/zsh

I am unsetting an array like this unset variable[$i] and get
..
What is the correct way to unset an array element.

You can't strictly *unset* an element to an array. In zsh, an array is always a set of strings that has a particular length. So what you can do is limited to changing the length of the array or setting an element of the array to be an empty string. The latter is probably nearest to
what you want, but (in places where it makes a difference) the shell
will always treat the empty element as a string with zero length, not as
an unset parameter.  The syntax for that is

 variable[$i]=
[...]

Yes, contrary to ksh, zsh arrays are not sparse arrays but
normal arrays as for instance in C (though indices start at 1,
not 0). You could implement a sparse array with an associative
array.

Another thing to be aware of is that $array in zsh expands to
the non-empty elements of the array.

~$ a[5]=foo
~$ printf '<%s>\n' $a
<foo>
~$ printf '<%s>\n' "$a[@]"
<>
<>
<>
<>
<foo>

a[100000]=

declares an array of 100000 elements, all of them empty.

But you could do:

typeset -A a
a[100000]=

Which would declare an associative array with only one element
of key "100000" (beware 100000 is a string)

"$a[@]" would then expand to the list of values (here only one
empty value) but beware that you cannot guarantee the order in
which the values will be displayed.

Thanks Stephane and Peter, I set it to an empty string to get by the problem. I'll definitely play around with your ideas there Stephane!

I'm starting to worry about these issues... We have thousands of scripts, this is going to take some time if little things in ksh break in zsh.

Is there somewhere a good document or site where other who have migrated from ksh to zsh have listed all these things they have come up against.

Cheers and thanks,

Jerry


Attachment: smime.p7s
Description: S/MIME cryptographic signature



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