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

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

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

小唯快跑啊 2019-07-20 14:11:31
如何在bash中将变量的值用作另一个变量的名称我想声明一个变量,其名称来自另一个变量的值,我编写了以下代码:a="bbb"$a="ccc"但没起作用。完成这项工作的正确方法是什么?
查看完整描述

3 回答

?
qq_花开花谢_0

TA贡献1835条经验 获得超6个赞

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-20
?
当年话下

TA贡献1890条经验 获得超9个赞

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

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

第二个例子:

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


查看完整回答
反对 回复 2019-07-20
?
慕容708150

TA贡献1831条经验 获得超4个赞

这可能对你有用:

foo=bar
declare $foo=baz
echo $bar
baz

或者这个:

foo=bar
read $foo <<<"baz"echo $bar
baz


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

添加回答

举报

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