bash 带冒号的关联数组键字符串出错

bash associative array key string with colon is giving error

我正在创建源和目标 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")

如何告诉 bash 给定的键是一个完整的字符串。

那不是关联数组。您需要使用 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" )

declare -a 创建一个数字索引数组,因此 shell 试图将您的索引解析为数字。