A-K*_*A-K 6 string bash replace lowercase substitution
我正在尝试使用bash中的字符串替换将大写字母更改为小写字母,但是我遇到了严重的替换错误。
> a=HEY
> echo $a
HEY
> echo ${a,,}
-bash: ${a,,}: bad substitution
# desired output is hey
Run Code Online (Sandbox Code Playgroud)
我已经看到了与此类似的问题,但是在大多数情况下,这归因于使用早期版本的bash。我正在使用GNU bash 4,但仍然遇到相同的问题。
> bash --version
GNU bash, version 4.3.33(1)-release (x86_64-apple-darwin14.1.0)
Run Code Online (Sandbox Code Playgroud)
这可能是Mac的东西吗?任何帮助,将不胜感激。
看起来最先出现的 bashPATH恰好是 4.3.33,但您在交互式会话中运行的 bash 可能是旧版本。跑去echo "$BASH_VERSION"检查。
如果以上正确,运行
type bash
Run Code Online (Sandbox Code Playgroud)
查看较新版本的路径,可能类似于/opt/local/bin/bash. 我会假设它是。如果你希望它成为你的登录 shell,首先将它添加到 /etc/shells
sudo -e /etc/shells
Run Code Online (Sandbox Code Playgroud)
在这之后,允许用户通过使用以选择作为登录壳chsh(CH安格SH ELL)命令
chsh -s /opt/local/bin/bash
Run Code Online (Sandbox Code Playgroud)