Bash 脚本:关联数组仅在给定多个值时识别一个值

erc*_*rch 2 bash array

这行 Bash (4.0) 脚本

klang=([string_0]='element_0' [string_1]='element_1' [string_2]='element_2')
echo "${klang[*]}"     # should output the all set elements
echo "${#klang[*]}"    # should output the number of set elements
Run Code Online (Sandbox Code Playgroud)

返回(出于某种原因):

element_2
1
Run Code Online (Sandbox Code Playgroud)

此脚本中没有设置其他命令,而且我对 Bash 脚本编写非常陌生。其他元素(Element_0Element_1)发生了什么变化?这确实适用于索引数组和数字以及所有内容,但不适用于文本 - 好吧,除了一个元素比我要求的少一点......我在哪里遗漏了什么?

jll*_*gre 6

您需要首先将您的变量(klang此处)声明为一个关联数组bash

$ declare -A klang
$ klang=([string_0]='element_0' [string_1]='element_1' [string_2]='element_2')
$ echo "${klang[*]}"
element_2 element_0 element_1
$ echo "${#klang[*]}"
3
Run Code Online (Sandbox Code Playgroud)

关联数组是在4.0bash版中引入的。

它们首先由 实现ksh93,此问题不会出现。