【发布时间】:2014-07-24 13:48:12
【问题描述】:
此代码作为bash-hackers.org wiki page 的数组间接解决方法提供,作为间接获取数组长度和索引的示例。
这个Stackoverflow question也提到了。
我想具体了解为什么local -a 'xkeys=("${!'"$1"'[@]}")' 有效。这里发生了什么。我知道等号右边有三个不同的字符串:
- 'xkeys=("${!'
- “$1”
- '[@]}")'
为什么会这样?
这是代码:
isSubset() {
local -a 'xkeys=("${!'"$1"'[@]}")' 'ykeys=("${!'"$2"'[@]}")'
set -- "${@/%/[key]}"
(( ${#xkeys[@]} <= ${#ykeys[@]} )) || return 1
local key
for key in "${xkeys[@]}"; do
[[ ${!2+_} && ${!1} == ${!2} ]] || return 1
done
}
谢谢
【问题讨论】:
-
我只是解释了一堆
isSubsethere的操作,虽然没有具体说明这一点。
标签: arrays bash indirection