Bash 4.3.33中的字符串替换(小写) - 错误的替换错误

时间:2015-04-24 19:03:09

标签: string bash replace substitution lowercase

我正在尝试使用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 个答案:

答案 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:]'