在Dash中从字符串命名变量

时间:2017-04-13 09:48:26

标签: sh ksh dash-shell

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

var="cle"
value="1"

printf -v $var "$value"

echo $cle

我希望它输出“1”

我得到了:

illegal option "-v"

我尝试用declare函数替换printf,但是破折号也没有包含它。

1 个答案:

答案 0 :(得分:0)

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

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

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