How to define array in multiple lines in Shell

Is it possible to define an array in multiple lines in a shell script file? I tried something like this:

foo.sh

#!/usr/bin/env bash

messages=(
    "Hello"
    "World"
)

echo $messages

However, the output only has the first line "Hello", but not the second line "Word".

$ sh foo.sh
Hello

What is more confusing to me is that if I copy the content of foo.sh and paste it directly into the terminal, things work as I expected:

$ messages=(
    "Hello"
    "World"
)

echo $messages
Hello World

Anybody know why?


If you want to print the whole array, you need:

echo ${messages[@]}