Замена строки (в нижний регистр) в Bash 4.3.33 - ошибка неправильной замены
Я пытаюсь изменить прописные буквы на строчные, используя замену строк в bash, но получаю ошибку подстановки.
> a=HEY
> echo $a
HEY
> echo ${a,,}
-bash: ${a,,}: bad substitution
# desired output is hey
Я видел подобные вопросы, но в большинстве случаев это было связано с использованием более ранней версии Bash. Я использую GNU Bash 4 и до сих пор возникают те же проблемы.
> bash --version
GNU bash, version 4.3.33(1)-release (x86_64-apple-darwin14.1.0)
Может быть, это Mac? Любая помощь будет оценена.
2 ответа
Похоже, Bash, который является первым в PATH
случается, 4.3.33, но bash, который вы запускаете в интерактивном сеансе, вероятно, является более старой версией. Бежать echo "$BASH_VERSION"
Проверять.
Если вышеприведенное верно, запустите
type bash
чтобы увидеть путь более новой версии, вероятно, что-то вроде /opt/local/bin/bash
, Я предполагаю, что это так. Если вы хотите, чтобы это была ваша оболочка для входа, сначала добавьте ее в /etc/shells
sudo -e /etc/shells
После этого пользователи могут выбрать это в качестве оболочки входа в систему, используя chsh
(ch ange sh ell) команда
chsh -s /opt/local/bin/bash
Основываясь на комментариях к моему комментарию, это ответ:
echo $a | tr '[:upper:]' '[:lower:]'