Bernd, Thank you so very much!!! I would have never figured that out on my own. I went back to the Advanced Bash Scripting Guide (by Mendel Cooper) to see if this example would make a good addition. Searching on your use of Here Strings (e.g. <<<). I found on page 326 (18.1. Here Strings) a the following method that also works quite well.
read -r -a FileList <<< $(ls -1) I wish that I had noticed the Here Strings feature before. That is a great feature. Thank you both for your time and contributions! Regards Brad Reference: Advanced Bash Scripting Guide http://personal.riverusers.com/~thegrendel/abs-guide.pdf On Tue, 2008-02-12 at 10:13 +0100, Bernd Eggink wrote: > Brad Diggs schrieb: > > > In short the bug is the result of failure to expand the > > subscript of an array if the subscript is a variable. > > The following script should return a list of files with a > > preceding (File <#>: ). However, it does not work that > > way because the integer variable (${d}) used in the subscript > > of the array statement (FileList[${d}]=${File}) does not get > > properly expanded. > > > > #!/bin/bash > > declare -a FileList=('') > > declare -i d=0 > > > > ls -1| while read File > > do > > FileList[${d}]=${File} > > d=$((10#${d}+1)) > > done > > This is normal bash behaviour, see FAQ E4. As bash executes _all_ parts > of a pipe in subshells (in contrast to ksh, where the last component is > executed in the current shell), the variable 'FileList' being assigned > here is local to the subshell. After the loop the variable 'FileList' > declared in line 1 (which happens to have the same name, but that > doesn't matter) is unchanged. > > Try this instead: > > while read File > do > FileList[d]=$File > (( d=d+1 )) > done <<<"$(ls -1)" > > Greetings, > Bernd -- The Zone Manager http://TheZoneManager.COM http://opensolaris.org/os/project/zonemgr