How to define array in multiple lines in Shell

MacosShell

Macos Problem Overview


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?

Macos Solutions


Solution 1 - Macos

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

echo ${messages[@]}

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionYuchenView Question on Stackoverflow
Solution 1 - MacosJohn ZwinckView Answer on Stackoverflow