macOS High Sierra上的参数替换错误

11

${parameter[^|^^|,|,,][pattern]} 参数替换让我遇到了一个错误。

$ echo $greeting
hello world
$ echo "${greeting^}."
-bash: ${greeting^}.: bad substitution

我已经更新到最新的 bash 版本,但仍然遇到错误。

GNU bash, version 4.4.19(1)-release (x86_64-apple-darwin17.3.0)

我已经到处寻找,唯一的建议是确保它运行的是bash 4版本。

$ echo $SHELL
/bin/bash

我正在运行 macOS High Sierra。

1个回答

9

您的默认Shell不是从brew install bash下载的包含参数扩展语法的v4版本的bash Shell。

在macOS上,echo $BASH_VERSION 命令可以告诉您当前Shell的版本。而 bash --version 则显示您的$PATH中第一个bash版本的信息。所以,您以前查看的版本信息并没有告诉您正在运行的版本。

您需要将最新版本的bash添加到文件/etc/shells的最后一行,并使用命令将其设置为Terminal的默认Shell。

chsh -s /usr/local/bin/bash "$USER"

在此之后关闭并重新打开 Terminal 以使其生效。如果没有在您的 Terminal 中添加此默认选项,则只能在解释器 she-bang 设置为 #!/usr/local/bin/bash 的脚本中使用最近的 bash

另请参阅此Ask Different答案 - 在OSX上更新bash到4.0版本


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接