我想声明一个变量,其名称来自另一个变量的值,我编写了以下代码:
a="bbb"
$a="ccc"
但没有成功。完成这项工作的正确方法是什么?
eval
用于此目的,但如果您天真地这样做,将会出现令人讨厌的转义问题。这种事情通常是安全的:
name_of_variable=abc
eval $name_of_variable="simpleword" # abc set to simpleword
这打破了:
eval $name_of_variable="word splitting occurs"
The fix:
eval $name_of_variable="\"word splitting occurs\"" # not anymore
最终的解决方法:将要分配的文本放入变量中。我们就这样称呼它吧safevariable
。然后你可以这样做:
eval $name_of_variable=\$safevariable # note escaped dollar sign
转义美元符号解决了所有转义问题。美元符号一字不差地保留下来eval
函数,它将有效地执行此操作:
eval 'abc=$safevariable' # dollar sign now comes to life inside eval!
当然,这个任务不受一切影响。safevariable
可以包含*
, 空格,$
等等(需要注意的是我们假设name_of_variable
除了一个有效的变量名之外什么都不包含,并且我们可以自由使用:不是特殊的东西。)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)