How to concatenate arrays in bash? How to concatenate arrays in bash? arrays arrays

How to concatenate arrays in bash?


First, to read your list into an array, one entry per line:

readarray -t countries

...or, with older versions of bash:

# same, but compatible with bash 3.x; || is to avoid non-zero exit status.IFS=$'\n' read -r -d '' countries || (( ${#countries[@]} ))

Second, to duplicate the entries, either expand the array to itself three times:

countries=( "${countries[@]}" "${countries[@]}" "${countries[@]}" )

...or use the modern syntax for performing an append:

countries+=( "${countries[@]}" "${countries[@]}" )


Simply write this:

countries=$(cat)countries+=( "${countries[@]}" "${countries[@]}" )echo ${countries[@]}

The first line is to take input array, second to concatenate and last to print the array.


on ubuntu 14.04, the following would concatenate three elements (an element count would give :3), each element being an array countries:

countries=( "${countries[@]}" "${countries[@]}" "${countries[@]}" )

while the below would concatenate all elements in one single array:

countries=( ${countries[*]} ${countries[*]} ${countries[*]} )

a count of this would be 30 (taken into account the countries specified in the original post).