Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to define array in multiple lines in Shell

Tags:

shell

macos

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?

like image 631
Yuchen Avatar asked Sep 10 '17 01:09

Yuchen


People also ask

How do you write multiple lines in shell?

Using a Backslash. The backslash (\) is an escape character that instructs the shell not to interpret the next character. If the next character is a newline, the shell will read the statement as not having reached its end. This allows a statement to span multiple lines.

How do I echo an array in Bash?

How to Echo a Bash Array? To echo an array, use the format echo ${Array[0]}. Array is your array name, and 0 is the index or the key if you are echoing an associative array. You can also use @ or * symbols instead of an index to print the entire array.


1 Answers

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

echo ${messages[@]} 
like image 110
John Zwinck Avatar answered Sep 25 '22 06:09

John Zwinck