< Previous | Contents | Next >
Finding The Subscripts Used By An Array
As bash allows arrays to contain “gaps” in the assignment of subscripts, it is sometimes useful to determine which elements actually exist. This can be done with a parameter ex- pansion using the following forms:
${!array[*]}
${!array[@]}
where array is the name of an array variable. Like the other expansions that use * and @, the @ form enclosed in quotes is the most useful, as it expands into separate words:
[me@linuxbox ~]$ foo=([2]=a [4]=b [6]=c)
[me@linuxbox ~]$ for i in "${foo[@]}"; do echo $i; done
a b c
[me@linuxbox ~]$ for i in "${!foo[@]}"; do echo $i; done
2
4
6
[me@linuxbox ~]$ foo=([2]=a [4]=b [6]=c)
[me@linuxbox ~]$ for i in "${foo[@]}"; do echo $i; done
a b c
[me@linuxbox ~]$ for i in "${!foo[@]}"; do echo $i; done
2
4
6