在MacOS上的bash脚本中使用关联数组
我正在使用MacOS(Mojave10.14.6)并尝试编写bash脚本。我已经使用brew安装了最新版本的bash-5.0.16(1)版本(x86_64-apple-darwin18.7.0) 我没有更新/etc/shell文件的权限,因此我尝试使用在MacOS上的bash脚本中使用关联数组,bash,associative-array,macos-mojave,Bash,Associative Array,Macos Mojave,我正在使用MacOS(Mojave10.14.6)并尝试编写bash脚本。我已经使用brew安装了最新版本的bash-5.0.16(1)版本(x86_64-apple-darwin18.7.0) 我没有更新/etc/shell文件的权限,因此我尝试使用 #!/usr/bin/env bash bash --version 在我的脚本代码中 这也会返回上面的版本-5.0.16(1)-发行版(x86_64-apple-darwin18.7.0),但在相同的脚本中,我尝试 declare -A sv
#!/usr/bin/env bash
bash --version
在我的脚本代码中
这也会返回上面的版本-5.0.16(1)-发行版(x86_64-apple-darwin18.7.0),但在相同的脚本中,我尝试
declare -A svcCount
我得到下面的错误
declare: -A: invalid option
declare: usage: declare [-afFirtx] [-p] [name[=value] ...]
这似乎表明,该脚本仍在使用Mac的默认bash版本3.x
我应该如何更改脚本,以便使用上述关联数组定义的构造
谢谢如果要使用自制
bash
,请将此保存为脚本
:
#!/usr/local/bin/bash
echo $BASH_VERSION
declare -A svcCount
然后使用以下命令使其可执行:
chmod +x theScript
并与以下内容一起运行:
./theScript
在脚本的第一行做shebang/usr/local/bin/bash如果你想用自制的,我也试过了。刚才又尝试了一遍,仍然得到相同的错误请告诉我
/usr/local/bin/bash--version
的输出是什么?不要bash--version
,而是在脚本中放入echo$bash_version
。@MarkSetchell-输出/usr/local/bin/bash--version GNU bash,version 5.0.16(1)-发行版(x86\u 64-apple-darwin18.7.0)版权(C)2019免费软件基金会,许可证GPLV3+:GNU GPL版本3或更高版本,这是免费软件;您可以自由更改和重新分发它。在法律允许的范围内,没有任何保证。考虑一个眉毛凸起的RE:一个非社区维基回答一个极其频繁被问到的FAQ。@查尔斯达菲尽管看过,我从来没有理解过,或者在任何地方都能找到,告诉我什么是“社区维基”,或者为什么有人想做一个。谁穿这样的衣服?如何以及为什么?我很高兴知道…MarkSetchell-这起作用了。从你和“查尔斯”的解释中,我现在明白我做错了什么。谢谢