Я пытаюсь настроить приглашающую переменную 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 как зеленый цвет тоже.
EDIT: раньше я использовал ${!x} и eval echo $x, поэтому я принял их как решения. Для (возможно, болезненно) любопытных функции и переменная PS1 находятся в этом значении: https://gist.github.com/4383597