【发布时间】:2017-03-05 20:37:14
【问题描述】:
我想在 Bash 中创建一个关联数组,其中文件名从 glob 派生作为键。这是我正在做的事情:
declare -A file_hash
for file in *; do
file_hash+=([$file]=1)
done
我很好奇是否有更直接的方法来做同样的事情,有点像我们如何以这种方式初始化一个普通数组:
file_array=(*)
我从another SO 上的帖子中得到的一个想法是:
file_array=(*)
declare -A file_hash=( $(echo ${file_array[@]} | sed 's/[^ ]*/[&]=&/g') )
这是最好的方法吗?
【问题讨论】:
-
受 echo 方法的启发,这在某些测试中可以正常工作,但需要 eval :
declare -A filehash; eval $(printf 'filehash+=(["%s"]=1);' *.txt)
标签: bash associative-array glob