Замена строки (в нижний регистр) в 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:]'
Другие вопросы по тегам