这个问题在这里已有答案:
我测试我的bash脚本的同事给我发了这个截图
他从brew安装了bash
。 declare
有可能-A
没有bash:5
选项吗?
我用docker检查了一下,bash:5
必须有-A
:
$ docker run -it bash:5
bash-5.0# declare -A
declare -A BASH_ALIASES=()
declare -A BASH_CMDS=()
屏幕截图类似于bash:3
输出,当没有associative arrays support时:
$ docker run -it bash:3
bash-3.2# declare -A
bash: declare: -A: invalid option
declare: usage: declare [-afFirtx] [-p] [name[=value] ...]
是否可以在没有关联数组支持的情况下编译bash:5
?
Here是自制软件中bash
软件包的页面,我没有在Formula ruby安装脚本的./configure
部分找到任何特殊选项。
回答你的问题“你可以编译Bash而不支持关联数组”:有一个configure
option --enable-array-variables
,我强烈怀疑它会关闭对普通数组和关联数组的支持。据我所知,没有办法关闭关联数组。
更有可能的是,您的脚本始于
#!/bin/bash
在macOS上,它是没有关联数组的Bash 3.2;修复是使用
#!/usr/bin/env bash
代替。有关详细信息和更多替代方案,请参阅this answer。