在 bash/shell 中声明数组 [重复]
Posted
技术标签:
【中文标题】在 bash/shell 中声明数组 [重复]【英文标题】:Declare array in bash/shell [duplicate] 【发布时间】:2021-11-05 19:43:11 【问题描述】:我对如何在 bash 中声明数组感到困惑。
假设:
$arr[1]=x
$arr[2]=y
$arr[3]=z
代码:
declare -A/-a object
fo var in $arr[@]
do
object["a"]="$arr[1]"
object["b"]="$arr[2]"
object["c"]="$arr[3]"
echo $object["a"]
done
输出:z
我想要的是:x
如果我评论了object["b"]
和object["c"]
,那么输出是正确的:x
不管-A还是-a,还是不行。这个问题与我的 bash 环境有关吗?
GNU bash,版本 3.2.57(1) -release (x86_64_apple-darwin18)
【问题讨论】:
在您的代码上放置一个有效的 shebang 并将其粘贴到 shellcheck.net 以进行验证。推荐。 大写-A
声明一个关联数组(必须在使用前完成,不像常规数组)
我在 S.O. 中看到了一些重复的内容。所以我两次删除了我的答案:-)
【参考方案1】:
索引数组要求下标必须被计算为一个数字。在这种情况下,object["a"] object["b"] object["c"]
被视为object[0] object[0] object[0]
如果键是任意字符串,则可以使用关联数组。使用-A
而不是-a
声明它
-a 每个名称都是一个索引数组变量(参见上面的数组)。
-A 每个名称都是一个关联数组变量(参见上面的数组)。
【讨论】:
没用,请看我的更新以上是关于在 bash/shell 中声明数组 [重复]的主要内容,如果未能解决你的问题,请参考以下文章