为了账号安全,请及时绑定邮箱和手机立即绑定

如何在bash 中将变量的值用作另一个变量的名称

如何在bash 中将变量的值用作另一个变量的名称

至尊宝的传说 2019-07-25 10:04:38
如何在bash 中将变量的值用作另一个变量的名称我想声明一个变量,其名称来自另一个变量的值,我编写了以下代码:a="bbb"$a="ccc"但它不起作用。完成这项工作的正确方法是什么?
查看完整描述

3 回答

?
桃花长相依

TA贡献1860条经验 获得超8个赞

eval用于此,但如果你天真地做,将会有令人讨厌的逃避问题。这种事情通常是安全的:

name_of_variable=abceval $name_of_variable="simpleword"   # abc set to simpleword

这打破了:

eval $name_of_variable="word splitting occurs"

修复:

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包含一个有效的变量名,我们可以自由使用:不是特别的。)


查看完整回答
反对 回复 2019-07-25
?
一只萌萌小番薯

TA贡献1795条经验 获得超7个赞

你可以使用declare!,像这样:

John="nice guy"programmer=Johnecho ${!programmer} # echos nice guy

第二个例子:

programmer=Inesdeclare $programmer="nice gal"echo $Ines # echos nice gal


查看完整回答
反对 回复 2019-07-25
  • 3 回答
  • 0 关注
  • 460 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信