【发布时间】:2019-09-04 03:50:32
【问题描述】:
我知道对于 关联 数组,数组键没有固有的顺序:
declare -A map=([a]=b [c]=d [e]=f)
echo "${!map[@]}" # => e c a (perhaps)
但是索引数组呢?
试试这个:
declare -a list
for i in {1..1000}; do list[RANDOM]=1; done
echo "${!list[@]}"
索引似乎是按数字顺序排列的。但我可以依赖它吗?
【问题讨论】:
-
您能否澄清您是否希望能够在特定 bash 版本(即可以通过检查 bash 的源代码来证明)或任意未来版本(即应该是设计/可以是通过文档证明)?
-
当您将循环更改为
for i in {1..10}; do echo "${!list[@]}"; list[RANDOM]=1; done时,您会得出肯定的结论——似乎需要对它进行数字排序。是否可靠...? -
@aaron,不管怎样
-
我的直觉是,对于数字索引数组,答案是肯定的,但是维护者 Chet Ramey 应该可以通过 help-bash@gnu.org 获得权威的答案。
标签: bash