Linux Bash显示数组中的多个元素

8mmmxcuj  于 2023-04-20  发布在  Linux
关注(0)|答案(2)|浏览(172)

有没有一种方法可以显示数组中的多个元素,以及如何使用索引变量来显示所有元素,例如:
在这里我可以得到元素:

ANIMALS=('DOG' 'CAT' 'CAW' 'BIRD')
INDEX=1
echo ${ANIMALS[$INDEX]}

CAT
INDEX=2
echo ${ANIMALS[$INDEX]}

CAW

问题1,如何使用变量index获取所有元素?我给它赋值@,但得到以下错误:

INDEX=@
echo ${ANIMALS[$INDEX]}
-bash: @: syntax error: operand expected (error token is "@")

预期结果:显示数组中的所有元素
问题2,如何显示多个元素,例如,如果我想显示索引0和3中的元素,类似于:

INDEX="0  3"
echo ${ANIMALS[$INDEX]}

预期结果:

DOG BIRD
lrpiutwd

lrpiutwd1#

我认为最好的选择是使用一个数字列表,并在其中添加iter:

$ ANIMALS=('DOG' 'CAT' 'CAW' 'BIRD')
$ INDEXES=(1 3)
$ for key in "${INDEXES[@]}"; do echo "${ANIMALS[$key]}"; done

这样做的结果应该是:

CAT
BIRD
flseospp

flseospp2#

对于问题1,您可以使用“${ANIMALS[@]}”语法来迭代数组中的所有元素:

INDEX=("${ANIMALS[@]}")
echo "${INDEX[@]}"

这将打印:

DOG CAT CAW BIRD

对于问题2,如果你想显示数组中的多个元素,你可以将索引指定为花括号“{ }”中的单独元素,并用逗号“,”分隔它们。下面是一个例子:

INDEX=("0" "3")
for i in "${INDEX[@]}"; do
  echo "${ANIMALS[$i]}"
done

这将打印:

DOG 
BIRD

如果要在同一行中打印:

result=""
for i in "${INDEX[@]}"; do
  result+=" ${ANIMALS[$i]}"
done

# Remove leading space
result="${result# }"

echo "$result"

这将打印为

DOG BIRD

请注意,花括号“{ }”中的元素应该用逗号“,”分隔,不带任何空格。此外,数组中的索引应该指定为字符串,而不是中间有空格的单个字符串。

相关问题