Я пытаюсь настроить приглашающую переменную 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