bash与冒号的关联数组键字符串给出错误

Nec*_*twi 1 unix bash associative-array

我正在创建源和目标MAC地址的关联数组。

$ declare -a SrcDstMap
$ SrcDstMap["9c:4e:20:73:e2:72"]="ff:ff:ff:ff:ff:ff"
-bash: 9c: value too great for base (error token is "9c")
$ SrcDstMap["fc:4e:20:73:e2:72"]="ff:ff:ff:ff:ff:ff"
-bash: fc:4e:20:73:e2:72: syntax error in expression (error token is ":4e:20:73:e2:72")
Run Code Online (Sandbox Code Playgroud)

我怎么能告诉bash给定的键是一个完整的字符串。

Cha*_*ffy 5

那不是一个关联数组。您需要使用declare -A,不declare -a

$ declare -A SrcDstMap
$ SrcDstMap["9c:4e:20:73:e2:72"]="ff:ff:ff:ff:ff:ff"
$ declare -p SrcDstMap
declare -A SrcDstMap=([9c:4e:20:73:e2:72]="ff:ff:ff:ff:ff:ff" )
Run Code Online (Sandbox Code Playgroud)

declare -a 创建一个数字索引数组,因此外壳程序尝试将索引解析为数字。

  • 从安全角度考虑,Homebrew的设计很差(要求以某种方式削弱系统安全性,该方式应允许以安装它的用户身份运行的任何程序都将新软件放入PATH)。作为实践,我不鼓励使用它,因此不会为使用它提供帮助。 (2认同)