BASH:根据变量的名称修改数组的内容
问题描述:
假设我已经创建了一个关联数组aaa
,其中declare -A aaa
和aaa[bbb]=0
,我有var=aaa
。我怎样才能让1 aaa[bbb]
增加只用var
和bbb
因为我可能不知道在运行时数组的确切名称。BASH:根据变量的名称修改数组的内容
我试图eval "(($var[bbb]++))"
,但没有奏效。
谢谢!
答
我认为这是足够重要在回答中要注意的,而不仅仅是一个评论。你在不需要需要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
您的代码为我工作。你在用什么外壳?它如何失败?你如何检查你的代码的结果? – Fred
顺便说一句,使用'eval'可能开辟代码注入风险,如果您不能保证变量的内容是安全的(例如,如果var'的'内容作为参数传递或从文件中读取)。 – Fred
@Fred我尝试了'echo $ {!var}',只是有一个空行。我正在使用bash。 –