如何在Shell中的多行中定义数组

Yuc*_*ong 7 macos shell

是否可以在shell脚本文件中的多行中定义数组?我试过这样的事情:

foo.sh

#!/usr/bin/env bash

messages=(
    "Hello"
    "World"
)

echo $messages
Run Code Online (Sandbox Code Playgroud)

但是,输出只有第一行"Hello",而不是第二行"Word".

$ sh foo.sh
Hello
Run Code Online (Sandbox Code Playgroud)

更令我困惑的是,如果我复制foo.sh的内容并将其直接粘贴到终端中,那么事情就像我预期的那样:

$ messages=(
    "Hello"
    "World"
)

echo $messages
Hello World
Run Code Online (Sandbox Code Playgroud)

谁知道为什么?

Joh*_*nck 11

如果要打印整个阵列,则需要:

echo ${messages[@]}
Run Code Online (Sandbox Code Playgroud)

  • `${messages[*]}` 也可以访问整个数组。如果索引号是@或*,则数组的所有成员都会被引用,如[指南](https://tldp.org/LDP/Bash-Beginners-Guide/html/sect_10_02.html)所述 (2认同)