是否可以在不支持关联数组的情况下编译 Bash 5?
Is it possible to compile Bash 5 without support for associative arrays?
测试我的 bash 脚本的同事向我发送了这张屏幕截图
他从 brew 安装了 bash
。有没有可能 declare
在 bash:5
中没有 -A
选项?
我检查了 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
包的页面,我在公式 ruby 安装脚本的 ./configure
部分没有找到任何特殊选项。
回答你的问题 "can you compile Bash without support for associative arrays":有一个 configure
option --enable-array-variables
,我强烈怀疑它关闭了对普通数组和关联数组的支持。据我所知,没有办法只关闭关联数组。
更有可能的是,您的脚本以
开头
#!/bin/bash
在 macOS 上,Bash 3.2 没有关联数组;解决方法是使用
#!/usr/bin/env bash
相反。有关详细信息和更多替代方案,请参阅 this answer。
测试我的 bash 脚本的同事向我发送了这张屏幕截图
他从 brew 安装了 bash
。有没有可能 declare
在 bash:5
中没有 -A
选项?
我检查了 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
包的页面,我在公式 ruby 安装脚本的 ./configure
部分没有找到任何特殊选项。
回答你的问题 "can you compile Bash without support for associative arrays":有一个 configure
option --enable-array-variables
,我强烈怀疑它关闭了对普通数组和关联数组的支持。据我所知,没有办法只关闭关联数组。
更有可能的是,您的脚本以
开头#!/bin/bash
在 macOS 上,Bash 3.2 没有关联数组;解决方法是使用
#!/usr/bin/env bash
相反。有关详细信息和更多替代方案,请参阅 this answer。