macOS High Sierra上的参数替换错误替换错误

时间:2018-03-30 11:08:32

标签: bash macos

${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 个答案:

答案 0 :(得分:5)

您的默认shell是而不是 bash shell(从brew install bash下载),其中包含支持您所指的参数扩展语法的v4

在macOS echo $BASH_VERSION上会告诉你当前shell的版本。 bash --version会告诉您bash中第一个$PATH的版本。因此,您查看该版本的方式并没有告诉您正在运行的版本。

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

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

关闭并重新打开Terminal以使其生效。如果不在Terminal中添加此默认选项,则只能在解释器设置为bash

的脚本上使用最近的#!/usr/local/bin/bash

另见Ask Different answer to - Update bash to version 4.0 on OSX