来自 Dash 中字符串的名称变量

Name variable from string in Dash

我需要从一个字符串中设置一个变量名。 这是我的代码:

var="cle"
value="1"

printf -v $var "$value"

echo $cle

我希望它输出“1”

我得到:

illegal option "-v"

我试图用 declare 函数替换 printf,但是 dash 也不包含它。

dash 中执行此操作的唯一方法是使用 eval,但这是有风险的,除非您 知道 您的字符串是有效的标识符.

expr "$var" : '[_[:alpha:]][_[:alnum:]]\{0,\}$' && eval "$var=$value"

如果 var 的值不是单个有效标识符,则对 expr 的调用将失败(或至少,旨在失败)。