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

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

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

a="bbb"$a="ccc"

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


至尊宝的传说
浏览 461回答 3
3回答

桃花长相依

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
打开App,查看更多内容
随时随地看视频慕课网APP