You should use printf
instead:
printf "%s\n" "${mtches[@]}"
Note
In bash, you should use "$@"
instead of "$*"
, except you have a special reason. This reason is also applied to array. From man bash
, section Arrays
:
Any element of an array may be referenced using ${name[subscript]}.
The braces are required to avoid conflicts with pathname expansion. If
subscript is @ or *, the word expands to all members of name. These
subscripts differ only when the word appears within double quotes. If
the word is double-quoted, ${name[*]} expands to a single word with the
value of each array member separated by the first character of the IFS
special variable, and ${name[@]} expands each element of name to a sep‐
arate word. When there are no array members, ${name[@]} expands to
nothing. If the double-quoted expansion occurs within a word, the
expansion of the first parameter is joined with the beginning part of
the original word, and the expansion of the last parameter is joined
with the last part of the original word. This is analogous to the
expansion of the special parameters * and @ (see Special Parameters
above).
Only use ${array[*]}
when you want join all array elements to a string.