我已使用值填充了数组foo$i
,并设置了i=4
(但i
可以是任何内容)。我怎样才能得到这个数组的长度?命令${#foo4[@]}
有效,但${#foo$i[@]}
没有。如果数组的名称有变量,我如何找到长度?
答案 0 :(得分:3)
使用bash 4.3,有一个新功能,namerefs,可以安全地完成:
i=4
foo4=( hello cruel world )
declare -n foo_cur="foo$i"
foo_count=${#foo_cur[@]}
echo "$foo_count"
在bash 4.3之前,您需要使用eval (despite its propensity for causing bugs):
i=4
foo4=( hello cruel world )
eval 'foo_count=${#foo'"$i"'[@]}'
echo "$foo_count"
...得出3
的正确答案。