Bash – How to Join an Array of Strings with Spaces

arraybashquotingshell-script

My bash script:

#!bin/bash
MY_ARRAY=("Some string" "Another string")
function join { local IFS="$1"; shift; echo -e "$*"; }
join "," ${MY_ARRAY[@]}

I want the output to be:
Some string,Another string.

Instead, I get Some,string,Another,string.

What must I change to get the result I want?

Best Answer

My modified version of your script:

#!bin/bash
my_array=("Some string" "Another string")
my_join() {
  [ "$#" -ge 1 ] || return 1
  local IFS="$1"
  shift
  printf '%s\n' "$*"
}
my_join , "${my_array[@]}"

Notes:

Related Question