我正在尝试使用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的事吗?任何帮助将不胜感激。
答案 0 :(得分:3)
看起来PATH
中的第一个bash恰好是4.3.33,但是您在交互式会话中运行的bash可能是旧版本。运行echo "$BASH_VERSION"
进行检查。
如果上述内容正确无误,请运行
type bash
查看较新版本的路径,可能类似于/opt/local/bin/bash
。我会假设它是。如果您希望将其作为登录shell,请先将其添加到/ etc / shells
sudo -e /etc/shells
之后,用户可以使用chsh
( ch ange sh ell)命令将其选为登录shell
chsh -s /opt/local/bin/bash
答案 1 :(得分:0)
基于对我的评论的评论,这就是答案:
echo $a | tr '[:upper:]' '[:lower:]'