bash - 在 bash/shell 中声明数组
问题描述
我对如何在 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"]
and object["c"]
,那么输出是正确的:x
不管是-A还是-a,还是不行。这个问题与我的 bash 环境有关吗?
GNU bash,版本 3.2.57(1) -release (x86_64_apple-darwin18)
解决方案
索引数组要求下标必须被评估为一个数字。在这种情况下,如果键是任意字符串,object["a"] object["b"] object["c"]
则object[0] object[0] object[0]
可以使用关联数组。-A
使用而不是声明它-a
-a 每个名称都是一个索引数组变量(参见上面的数组)。
-A 每个名称都是一个关联数组变量(参见上面的数组)。
推荐阅读
- android - 如果我想检索数据需要重新登录
- ios - 自定义 UIGestureRecognizer 并不总是调用它的 action 方法
- cordova - 卡住你想将你的新应用程序与cordova集成到目标
- static - 为什么在同一范围内可以有多个具有静态生命周期的可变引用
- html - 在不违反标准的情况下使用单个标签?
- javascript - 条带结帐和 object-src
- java - 如何使用 Selenium 从动态下拉列表中选择一个选项?
- wpf - 带有 ItemTemplate 的 WPFLocalizationExtension
- android - 找不到系统映像 - Android Studio
- dart - 如何在 Dart 中水平打印到控制台?