Yuchen
Yuchen

Reputation: 33036

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?

Upvotes: 92

Views: 86700

Answers (1)

John Zwinck
John Zwinck

Reputation: 249113

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

echo ${messages[@]}

Upvotes: 76

Related Questions