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 towhat you want, but (in places where it makes a difference) the shellwill always treat the empty element as a string with zero length, not asan 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=foo ~$ printf '<%s>\n' $a <foo> ~$ printf '<%s>\n' "$a[@]" <> <> <> <> <foo> a= declares an array of 100000 elements, all of them empty. But you could do: typeset -A a a= 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
Description: S/MIME cryptographic signature