On , I learnt ...

How to join an array in Bash

Say you want to build an array of values then print them out as a tab-separated line:

# Build an array. row=(  "one"  "two"  "three" )  # Set the internal field separator to the tab character. IFS=$'\t';  # Echo the array. echo "${row[*]}"; 

To understand how this works, consider the explanation of $* from the Bash Beginners Guide:

$* Expands to the positional parameters, starting from one. When the expansion occurs within double quotes, it expands to a single word with the value of each parameter separated by the first character of the IFS special variable.

In the above example we set IFS to be a tab character using ksh93 syntax, then echo the array using $* syntax which ensures the fields are joined using a tab character.

Note that print arrays with *@ doesn’t have this behaviour:

$@ Expands to the positional parameters, starting from one. When the expansion occurs within double quotes, each parameter expands to a separate word.