Bash关联字典不工作(声明:-A:无效选项)

Bash关联字典不工作(声明:-A:无效选项),bash,macos,dictionary,Bash,Macos,Dictionary,我遵循了每一个bash字典示例,但没有一个是有效的。我现在有 _配置: #!/bin/bash instance_map["dev"]=project-dev instance_map+=( ["stage"]="project-staging" ) declare -A animals=( ["moo"]="cow" ["woof"]="dog")

我遵循了每一个bash字典示例,但没有一个是有效的。我现在有

_配置:

#!/bin/bash


instance_map["dev"]=project-dev
instance_map+=( ["stage"]="project-staging" )

declare -A animals=( ["moo"]="cow" ["woof"]="dog")
test.sh:

#!/bin/bash

source _CONFIG


echo ${instance_map["dev"]}
echo ${instance_map["stage"]}


echo "${animals[moo]}"
for sound in "${!animals[@]}"; do echo "$sound - ${animals[$sound]}"; done
declare -A instance_map=( ["dev"]="project-dev" ["stage"]="project-staging" ["prod"]="project" )

echo ${instance_map["dev"]}
echo ${instance_map["stage"]}
出于某种原因,在遵循每个示例之后,我得到

$ ./test.sh dev
_CONFIG: line 9: declare: -A: invalid option
declare: usage: declare [-afFirtx] [-p] [name[=value] ...]
project-devproject-staging
project-devproject-staging
dog
0 - dog

$ bash --version
GNU bash, version 4.4.0(1)-release (x86_64-apple-darwin15.6.0)

如何在Bash中将用户输入“dev”映射到“myprojectname”?

通过升级Bash解决了该问题<代码>$BASH_VERSION打印您的真实版本

brew unlink bash
brew update && brew install bash
test.sh:

#!/bin/bash

source _CONFIG


echo ${instance_map["dev"]}
echo ${instance_map["stage"]}


echo "${animals[moo]}"
for sound in "${!animals[@]}"; do echo "$sound - ${animals[$sound]}"; done
declare -A instance_map=( ["dev"]="project-dev" ["stage"]="project-staging" ["prod"]="project" )

echo ${instance_map["dev"]}
echo ${instance_map["stage"]}

您已经安装了第二个bash。但是脚本使用默认的
/bin/bash
。(谢邦)。默认值为3.2(不知道
-A
)。当您键入
bash--version
时,将搜索路径并执行您酝酿的bash。。。将您的shebang更改为
#/usr/bin/env bash
或更改路径,例如
#/usr/local/bin/bash
。你可以接受我的答案,如果你愿意,我会接受的,你自己就接受。您可以接受自己的答案:):)我已经更新到bash v5,但我的仍然不起作用,
bash--version
显示bash是v5。如上图所示运行test.sh会生成:
-bash:declare:-A:invalid选项declare:usage:declare[-afFirtx][p][name[=value]…]