猿问

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

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

我想声明一个变量,其名称来自另一个变量的值,我编写了以下代码:

a="bbb"$a="ccc"

但没起作用。完成这项工作的正确方法是什么?


小唯快跑啊
浏览 994回答 3
3回答

qq_花开花谢_0

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

当年话下

你可以用declare和!,就像这样:John="nice guy"programmer=Johnecho ${!programmer} # echos nice guy第二个例子:programmer=Inesdeclare $programmer="nice gal"echo $Ines # echos nice gal

慕容708150

这可能对你有用:foo=bar declare&nbsp;$foo=baz echo&nbsp;$bar baz或者这个:foo=bar read&nbsp;$foo&nbsp;<<<"baz"echo&nbsp;$bar baz
随时随地看视频慕课网APP
我要回答