来自 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
的调用将失败(或至少,旨在失败)。
我需要从一个字符串中设置一个变量名。 这是我的代码:
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
的调用将失败(或至少,旨在失败)。