Hello good people, It seems there is a bug which I will describe below. I checked with usenet comp.unix.shell people and they said that is strange behavior. I am using Z-shell 5.8. The problem is when I add elements to an array with += inside a function, an empty element is generated. The empty element is added only if I set array $files as local. The following is an example code. #!/bin/zsh #!/bin/bash func() {     local REPLY  files     #unset files     for REPLY in file1 file2 file3     do         files+=( "$REPLY" )         echo "${#files[@]} -- ${files[@]}"     done } func If I set $files to local but unset it before the loop, the empty element is not added. Running the script with zsh returns: 2 --  file1 3 --  file1 file2 4 --  file1 file2 file3 While if we run the code with bash: 1 -- file1 2 -- file1 file2 3 -- file1 file2 file3 I was actually using a while read loop to read filenames, but the problem also occurs when I use the for loop. So the workaround suggested is to set $files as local and then later define files=( ) which will prevent empty element being added somehow. Thanks for all your efforts in making zsh so great!