Bash:具有变量名称的数组的长度

时间:2014-04-09 04:16:08

标签: bash shell

我已使用值填充了数组foo$i,并设置了i=4(但i可以是任何内容)。我怎样才能得到这个数组的长度?命令${#foo4[@]}有效,但${#foo$i[@]}没有。如果数组的名称有变量,我如何找到长度?

1 个答案:

答案 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的正确答案。