基本的 Bash 数组问题

Ant*_*ber 3 bash array echo variable

#!/bin/bash
# query1.sh

numbers=(53 8 12 9 784 69)
echo ${numbers[3]} # <--- this echoes "9" to standard output.

number=numbers[3]
echo number # <--- this echoes "number" to stdout.
echo $number # <--- this echoes "numbers[3]" to stdout.
echo ... <--- ???
Run Code Online (Sandbox Code Playgroud)

我应该使用什么语法来回显命名的变量number并将“9”作为标准输出?

ter*_*don 6

你的问题是:

number=numbers[3]
Run Code Online (Sandbox Code Playgroud)

未将数组的第 4 个元素分配给numbers变量number。那是因为numbers[3]实际上并不意味着什么:

$ numbers=(53 8 12 9 784 69)
$ echo $numbers[3]
53[3]
Run Code Online (Sandbox Code Playgroud)

发生的情况是,当您单独使用数组名称作为变量时,实际使用的是数组的第一个元素 ( 53)。于是$numbers[3]变成53[3]。你想要的是:

$ number=${numbers[3]}
$ echo $number
9
Run Code Online (Sandbox Code Playgroud)