BASH:根据变量的名称修改数组的内容

问题描述:

假设我已经创建了一个关联数组aaa,其中declare -A aaaaaa[bbb]=0,我有var=aaa。我怎样才能让1 aaa[bbb]增加只用varbbb因为我可能不知道在运行时数组的确切名称。BASH:根据变量的名称修改数组的内容

我试图eval "(($var[bbb]++))",但没有奏效。

谢谢!

+1

您的代码为我工作。你在用什么外壳?它如何失败?你如何检查你的代码的结果? – Fred

+1

顺便说一句,使用'eval'可能开辟代码注入风险,如果您不能保证变量的内容是安全的(例如,如果var'的'内容作为参数传递或从文件中读取)。 – Fred

+0

@Fred我尝试了'echo $ {!var}',只是有一个空行。我正在使用bash。 –

我认为这是足够重要在回答中要注意的,而不仅仅是一个评论。你在不需要需要eval这里。算术语句独立于参数扩展做独立的变量引用,因此只需使用参数扩展来代替var即可,这与aaa就足够了。

bash-4.4$ declare -A aaa 
bash-4.4$ aaa[bbb]=0 
bash-4.4$ ((aaa[bbb]++)) 
bash-4.4$ echo ${aaa[bbb]} 
1 
bash-4.4$ var=aaa 
bash-4.4$ (($var[bbb]++)) 
bash-4.4$ echo ${aaa[bbb]} 
2