如何在 Bash 中间接获取关联数组的键和值?

2024-01-11

在 Bash 中,仅给定一个包含关联数组名称的变量,

$ declare -A dict=([abc]=125 [def]=456)
$ dictvar="dict"

我们如何检索关联数组的键和值?


在 Bash 中,通过间接获取关联数组的键,给定变量中的数组名称dictvar一个人可以利用declare or local (原始来源 http://wiki.bash-hackers.org/syntax/arrays#indirection):

$ declare -a 'keys=("${!'"$dictvar"'[@]}")' # or 'local'

然后,获取值

$ for key in ${keys[@]}; do
$     value_var="${dictvar}[$key]"
$     echo "$key = ${!value_var}"
$ done

另一种使用eval建议在这个答案 https://stackoverflow.com/a/13306800/435522.

根据这个答案 https://stackoverflow.com/a/23839567/435522,在 Bash 4.3+ 中,由于有了新的功能,这项任务更容易完成declare -n可以将变量名称“解析”为实际变量。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Bash 中间接获取关联数组的键和值? 的相关文章

  • 在cmake中集成bash测试脚本

    我有一个 C cmake 项目 它使用 Boost Test 进行单元测试 现在我想向 cmake 公开一系列 bash 脚本 用于集成测试 假设每个脚本在以下情况下返回 0PASS或某些情况下 0FAILURE 我希望每次运行时都执行每个
  • Objects.deepToString(Object o) 方法

    班上java util Objects包含deepEquals Object a Object b 可用于比较任何类型的对象 包括数组和空引用 的方法 但不包含类似的方法deepToString Object o 这令人失望 顺便说一下 这
  • C 中的数组地址减法[重复]

    这个问题在这里已经有答案了 可能的重复 C 中的指针算术 https stackoverflow com questions 759663 pointer arithmetic in c Code int main int a 0 1 2
  • 如何自动转换十六进制代码以将其用作 Java 中的 byte[]?

    我这里有很多十六进制代码 我想将它们放入 Java 中 而不需要向每个实体附加 0x 喜欢 0102FFAB 和我必须执行以下操作 byte test 0x01 0x02 0xFF 0xAB 我有很多很长的十六进制代码 有什么办法可以自动做
  • 将 bash 提示符下的当前命令复制到剪贴板

    我想要一个快速的键盘命令序列 将 bash 提示符处的当前命令复制到剪贴板 例如 要将最后一个 bash 命令复制到剪贴板 我会按 up some command sequence 复制它 或者 例如 要在 bash 历史记录中搜索命令 我
  • PHP 使用主键和辅助键对多维数组进行排序[重复]

    这个问题在这里已经有答案了 如何按主键和辅助键对多维数组进行排序 例如 假设有以下数组 result array result 0 prio 1 result 0 date 2010 02 28 result 0 post February
  • Javascript 无法正确排序 DECIMAL 数字

    我有一些代码可以按字母顺序对名称进行排序 我遇到的问题是它处理小数的方式 它对名称进行排序 如下所示 我宁愿它按数字递增 DOG 1 0510 DOG 1 1031 DOG 11 1792 DOG 12 0920 DOG 12 1170 D
  • 为什么byteArray的长度是22而不是20?

    我们尝试从字符串转换为Byte 使用以下 Java 代码 String source 0123456789 byte byteArray source getBytes UTF 16 我们得到一个长度为 22 字节的字节数组 我们不确定这个
  • 解码Json数据数组并插入到mysql

    这个问题可能已经在这里问过 但我尝试搜索找不到它 我有如下 Json 数据 CityInfo CityCode 5599 Name DRUSKININKAI CityCode 2003 Name KAUNAS CityCode 2573 N
  • 为什么 char 数组需要 strcpy 而 char star 不需要 - 在 C 中使用结构

    我对这段代码有一个误解 typedef struct EXP int x char name char lastName 40 XMP main XMP a a name eaaa a lastName strcpy a lastName
  • 在 Node.js 中创建 JSON 数组

    我需要在用 Node js 编写的服务器中创建一个 JSON 字符串 以便在请求时发送到客户端 问题是这个 JSON 取决于服务器中的可用数据 因此 JSON 数组的大小并不总是相同 我已经尝试了一整天 但尽管我感觉很接近 但我仍然不明白
  • grep 彩色线条

    我编写了一个简单的 PHP shell 脚本 它解析文件并输出某些元素 它产生大量的输出 采用不同的 bash 颜色 绿色表示正常 黄色表示警告 红色表示错误等 在开发过程中我想过滤掉一些行 例如 所有包含红色文本的行 我可以使用grep
  • 是否可以在 Promise.all 稍后向数组添加 Promise?

    我正在做一个项目 我问自己启动这个项目是否可行Promise all在 Javascript 中 他们确实向数组添加了更多 Promise 的任务 以及它们是否也在运行 const runAsyncFunctions async gt co
  • 为关联数组选择哪种映射类型?学说ODM

    我有一个关于 顺便说一句 真的很棒 Doctrine ODM 的简单问题 假设您有一个类似以下的文档 Document class Test Id public id WHICHTYPE public field array 现在我想存储一
  • 需要有关使用 PHP 在 mysql 数据库中插入逗号分隔数据的帮助

    数据库表中已有的演示数据 INSERT INTO csvtbl ID SKU Product Name Model Make Year From Year To VALUES 1 C2AZ 3B584 AR Power Steering P
  • 如何将字节数组转换为图像 [kotlin]

    我想将字节数组转换为图像并在图像视图中显示它 但不知道该怎么做 有人可以指导我吗 我使用这个函数将位图转换为字节数组 private fun BitmapToByteArray ByteArray val stream ByteArrayO
  • 为什么使用数组索引循环数组比指针访问慢?

    我正在读Kochan的书 Programming in C 在第 14 页的 指针和数组 部分中 264 他说 一般来说 索引数组的过程比执行索引过程花费更多的时间 访问指针内容的过程 其实这也是主要原因之一 为什么使用指针来访问数组的元素
  • 打印 STDOUT/STDERR 并将它们写入 Bash 中的文件?

    有没有办法让 Bash 将 STDOUT STDERR 重定向到文件 但仍然将它们打印到终端 这会将 STDOUT 和 STDERR 重定向到同一个文件 some command 2 gt 1 tee file log Example to
  • 如果文件修改日期早于 N 天

    此问题涉及在文件的修改日期早于这么多天时采取行动 我确信创建日期或访问日期会类似 但对于修改日期 如果我有 file path name to some file N 100 for example N is number of days
  • 对数字和字母元素的数组进行排序(自然排序)

    假设我有一个数组 var arr 1 5 ahsldk 10 55 3 2 7 8 1 2 75 abc huds 我尝试对其进行排序 我得到了类似的东西 1 1 10 2 2 3 5 55 7 75 8 abc ahsldk huds 注

随机推荐

  • 在flutter中刷新令牌

    我正在开发一个金融项目 Flutter 其中从后端获取身份验证令牌经常过期 我怎样才能保留token只要过期用户正在使用该应用程序 我建议您可以以简单的方式处理这些事情 例如在获取数据时 如果令牌过期 您会收到 401 未经授权的异常 您可
  • 修改 iframe.src 而不进入历史对象

    我的网页中有一个 iframe 我通过 javascript 修改 src 属性 如下所示 document getElementById myiframe src http vimeo com videoid1 document getE
  • Installshield 无提示卸载在命令行中不起作用

    我们有一个 2006 年的旧应用程序 我们想使用组策略在命令行卸载 但我无法进行静默卸载 这有效 当然我需要点击下一步来卸载 C App Setup exe uninst 但事实并非如此 我看到沙漏了几秒钟 但该应用程序并未卸载 C App
  • 是否可以将 JFrame 置于前面但不获得焦点?

    我正在编写一个 Java 应用程序 Swing GUI 它会定期弹出 JFrame 是否有可能以某种方式将窗口置于前面 foo setAlwaysOnTop true 会更好 但是without有焦点吗 有些人在打字时时不时地将眼睛从屏幕上
  • 可扩展的非矩形 CSS 按钮?

    在网上进行了大量研究后 我发现了很多使用 CSS 设计提交按钮样式的建议和示例 但它们都生成了矩形按钮 我想制作一个非矩形按钮 它会自动调整自身大小以适合按钮图例 具体来说 我希望按钮看起来像这样 加上或减去圆角 有什么建议么 完全可以使用
  • 为什么我会收到“由于保护级别而无法访问”错误?

    我收到此错误 由于其保护级别 CTest A A 无法访问 编译此代码时 public class A private A public class B A public void SayHello Console WriteLine He
  • 如何子类化 QSpinBox 以便它可以将 int64 值作为最大值和最小值

    我需要实施一个QSpinBox控制应该能够处理int64值作为其最小值和最大值 目前的实现仅支持int32价值观 一天结束我的QSpinBox应该接受之间的任何值 9223372036854775807 和 9223372036854775
  • GSON disableHtmlEscaping - 为什么 GSON 默认情况下会转义 HTML?

    我注意到 GSON HTML 转义 lt and gt 字符 这可以通过使用禁用disableHtmlEscaping 构建器配置方法 但我的问题是 为什么 GSON 默认情况下会进行 HTML 转义 不进行 HTML 转义有哪些风险 Th
  • R 中的时间序列交叉验证:使用 csv() 和 tslm()-模型

    我目前正在尝试使用时间序列交叉验证来评估 tslm 模型 我想使用固定模型 不进行参数重新估计 来查看去年评估期的 1 到 3 步预测 我很难得到tsCV and tslm从预测库中可以很好地协同工作 我缺少什么 library forec
  • 如何在 robocopy 中使用 /mir /xd 开关时排除目标中的子目录

    正在运行一个脚本 它将一堆文件夹从一个卷镜像到另一个卷 问题是 现在目标文件夹中的子目录不属于原始镜像脚本的一部分 它们是独立的子目录 我不希望在镜像启动后清除它们 有没有办法让我使用 xd在 robocopy 中切换 我可以排除目标子目录
  • 如何用 Razor Pages 路由替换 MVC HomeController/Index 重定向?

    我正在从 ASP MVC Classic 迁移到 ASP Razor Pages 只剩下一个控制器需要 迁移 HomeController public class HomeController Controller UserManager
  • 日期不能是将来的 SQL

    我正在尝试添加一种约束 以防止用户将来输入日期 我需要它在用户尝试这样做时引发错误 这是我到目前为止所拥有的 Create Procedure CustomerBooks month int year int AS BEGIN SELECT
  • 在python中将文件夹中的文件复制到一个目录

    我有一个包含一些文件的文件夹 我想将其复制到一个目录 该文件夹也有一些我不想复制的文件 我知道有 os chdir 命令可以将我移动到该目录 但是 我不确定如何将我需要的文件复制到此目录中 任何帮助将不胜感激 UPDATE 这就是我现在所拥
  • 使用wiremock时连接被拒绝

    我在 Junit 中有这段代码 我明确地将端口设置为 8888 when clientUtils getLinkUrl eq HOSTELS MICROSERVICE name eq HOSTELS MICROSERVICE name an
  • 循环缓冲区的线程安全实现

    boost 库中的 Circular buffer 不是线程安全的 所以我将 boost circular buffer 对象包装在一个类中 如下所示 我认为 线程之间的互斥是通过使用条件变量 互斥锁和锁获取 释放来实现的 这个实现线程安全
  • 如何安装相关的 C++ 库以避免链接器命令失败?

    我最近尝试编译一个C 程序 但发现它给出了这个错误 Undefined symbols for architecture x86 64 std 1 locale use facet std 1 locale id const referen
  • Hibernate 左外连接

    我有这样的 Hibernate 服务方法 SELECT sc FROM SecurityContact sc WHERE sc securityId securityId2 securityId2由用户传入 每个 SecurityConta
  • C#读取ini文件

    我正在尝试读取具有以下格式的 ini 文件 SETTING VALUE SETTING2 VALUE2 我目前有以下代码 string cache sr ReadToEnd string splitCache cache Split new
  • 根据 WooCommerce 中的总支出,每位用户仅自动应用优惠券一次

    我想根据客户总消费金额自动应用优惠券 此优惠券仅需客户使用一次 这是我到目前为止所尝试过的 但我得到了一个空白屏幕 add action woocommerce before calculate totals loyalty order d
  • 如何在 Bash 中间接获取关联数组的键和值?

    在 Bash 中 仅给定一个包含关联数组名称的变量 declare A dict abc 125 def 456 dictvar dict 我们如何检索关联数组的键和值 在 Bash 中 通过间接获取关联数组的键 给定变量中的数组名称dic