这行 Bash (4.0) 脚本
Run Code Online (Sandbox Code Playgroud)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
此脚本中没有设置其他命令,而且我对 Bash 脚本编写非常陌生。其他元素(Element_0
和Element_1
)发生了什么变化?这确实适用于索引数组和数字以及所有内容,但不适用于文本 - 好吧,除了一个元素比我要求的少一点......我在哪里遗漏了什么?
您需要首先将您的变量(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
,此问题不会出现。