Bash:在变量名中使用一个变量



我想在变量名中使用一个变量,但不知道如何使用

if [some condition]; then
id="A"
else
id="B"
fi
${id}_count=$((${id}_count + 1))

如果满足条件,则为

A_count=$(A_count + 1))

或者如果条件不满足

B_count=$(B_count + 1))

${id}显然不起作用。我只是这样尝试,因为它在字符串中是这样工作的。

(不,这不是我想在其中使用$id的唯一一行。否则我会直接将其放入if条件中。(

它如何在变量名中工作?

谢谢,Patrick

不要使用eval。您可能不遵循此建议,并执行:

if some condition; then
id="A"
else
id="B"
fi
eval "${id}_count=$((${id}_count + 1))"
# or simpler:
# eval "((${id}_count++))"

但使用关联数组(或普通数组(更简单:

declare -A count
if some condition; then
id="A"
else
id="B"
fi
((count[$id]++))

最新更新