我试图设置我的 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