Есть несколько способов сделать это.
Изменить разделитель поля $IFS
(примечание, функциональный ответ Чепнера более элегантный):
OLD_IFS="$IFS"
IFS=","
echo "${data[*]}"
IFS="$OLD_IFS"
В фигурных скобках область изменения ограничена $IFS
(в противном случае вас ждет сюрприз позже).
Перебрать его содержимое:
delim=""
for item in "${data[@]}"; do
printf "%s" "$delim$item"
delim=","
done
echo # add a newline
Предполагая первый символ в $IFS
(по умолчанию пробел)нет ни в одном из элементов вашего массива, вы можете сохранить массив в виде строки и затем выполнить замену:
data_string="${data[*]}"
echo "${data_string//${IFS:0:1}/,}"
${IFS:0:1}
- это подстрока $IFS
, начинающаяся сначало и конец после одного символа.