我正在尝试设置PS1
提示变量以动态选择颜色。为此,我定义了一堆带有颜色名称的局部变量:
$ echo $Green
\033[0;32m
但我希望在动态分配变量时使用它们,但我不知道如何正确扩展它们:
> colorstr="\${$color}"
> echo $colorstr
${Green}
我已经尝试了十几种, 和双引号的组合,但似乎都不起作用eval
。echo
扩展变量的逻辑方式(我认为)会导致错误:
> colorstr="${$color}"
-bash: ${$color}: bad substitution
(为了清楚起见,我使用>
而不是$
提示字符,但我使用的是 bash)
如何扩展该变量?即,以某种方式获得“绿色”这个词的价值\033[0;32m
?并且最好让 bash 或终端也将其解析\033[0;32m
为绿色。
编辑:我以前误用过${!x}
,eval echo $x
所以我接受了这些作为解决方案。对于(也许是病态的)好奇,函数和PS1
变量都在这个要点上:https ://gist.github.com/4383597