是否可以在不支持关联数组的情况下编译 Bash 5?

Pau*_*kov 1 macos bash homebrew configure

测试我的 bash 脚本的同事向我发送了此屏幕截图

没有关联数组的 ba​​sh5

bash从 brew安装。有可能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=()
Run Code Online (Sandbox Code Playgroud)

bash:3当没有关联数组支持时,屏幕截图类似于输出:

$ docker run -it bash:3
bash-3.2# declare -A
bash: declare: -A: invalid option
declare: usage: declare [-afFirtx] [-p] [name[=value] ...]
Run Code Online (Sandbox Code Playgroud)

是否可以在bash:5没有关联数组支持的情况下进行编译?

bash自制程序包的页面,我在./configureFormula ruby​​ 安装脚本部分没有找到任何特殊选项。

Ben*_* W. 5

要回答您的问题“您能否在不支持关联数组的情况下编译 Bash”:有一个configure选项 --enable-array-variables,我强烈怀疑它关闭了对普通数组和关联数组的支持。据我所知,没有办法只关闭关联数组。

更有可能的是,您的脚本以

#!/bin/bash
Run Code Online (Sandbox Code Playgroud)

在 macOS 上,它是没有关联数组的 Bash 3.2;解决方法是使用

#!/usr/bin/env bash
Run Code Online (Sandbox Code Playgroud)

反而。有关详细信息和更多替代方案,请参阅此答案