Bash:计算关联数组中键的总数?

2024-01-28

考虑下面的关联数组:

declare -A shapingTimes
 shapingTimes=([0-start]=15 [0-stop]=21 [0-anotherkey]=foo)
shapingTimes+=([1-start]=4  [1-stop]=6  [1-anotherkey]=bar)
shapingTimes+=([2-start]=9  [2-stop]=11 [2-anotherkey]=blah)

有没有办法找到数组中每个条目使用的键总数? (这是数组中的每个“索引”吗?)

例如,如何计算:[start]、[stop]、[anotherkey] = 3 个键?

目前,我正在使用此代码中的硬编码值 (3),我发现(如下所示)可以很好地完成工作,但我想知道这是否可以动态实现?

totalshapingTimes=$((${#shapingTimes[*]} / 3))

我发现这些变量返回各个数组方面,但不是返回数组的总数keys.

echo "All of the items in the array:" ${shapingTimes[*]}
echo "All of the indexes in the array:" ${!shapingTimes[*]}
echo "Total number of items in the array:" ${#shapingTimes[*]}
echo "Total number of KEYS in each array entry:" #???

期望的输出:

All of the items in the array: 21 6 11 blah 15 4 bar 9 foo
All of the indexes in the array: 0-stop 1-stop 2-stop 2-anotherkey 0-start 1-start 1-anotherkey 2-start 0-anotherkey
Total number of items in the array: 9
Total number of KEYS in each array entry: 3

declare -A shapingTimes
shapingTimes=([0-start]=15 [0-stop]=21 [0-anotherkey]=foo)
shapingTimes+=([1-start]=4  [1-stop]=6  [1-anotherkey]=bar)
shapingTimes+=([2-start]=9  [2-stop]=11 [2-anotherkey]=blah)

# output all keys
for i in "${!shapingTimes[@]}"; do echo $i; done

Output:



1-start
2-stop
1-stop
0-start
2-start
2-anotherkey
1-anotherkey
0-stop
0-anotherkey
  

# Leading numbers and "-" removed:
for i in "${!shapingTimes[@]}"; do echo ${i/#[0-9]*-/}; done

Output:



start
stop
stop
start
start
anotherkey
anotherkey
stop
anotherkey
  

# put shortend keys in new associative array
declare -A hash
for i in "${!shapingTimes[@]}"; do hash[${i/#[0-9]*-/}]=""; done
echo "${#hash[@]}"

Output:



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

Bash:计算关联数组中键的总数? 的相关文章

  • 方法的表达式开头非法

    所以我试图打开 关闭 重新打开 读取并将数组转换为一维数组和二维数组 public class Assigntment2Condensed public static void main String args throws IOExcep
  • Typescript:按值检查对象是否存在于数组中

    我有这个数据 roles roleId 69801 role ADMIN roleId 69806 role SUPER ADMIN roleId 69805 role RB roleId 69804 role PILOTE roleId
  • 正则表达式可以与 C++ 中的字符数组一起使用吗

    我正在开发一个无法使用字符串库文件的程序 而是使用字符数组 我能够使用正则表达式 并且想知道是否有办法使用正则表达式和字符数组 甚至正则表达式和单个字符 我问的原因是当我尝试在匹配中使用我的 char 数组时 xUtility 会抛出一堆来
  • 如果存储字符串的 char 数组小于字符串,C++ 真正将字符串存储在哪里?

    我正在测试 C Premiere 书中有关 C 字符串的示例 const int size 9 char name1 size char name2 size C owboy 8 characters here cout lt lt How
  • 使用 equals 方法比较两个对象,Java

    我有一个对象数组 我想将它们与目标对象进行比较 我想返回与目标对象完全匹配的对象的数量 这是我的计数方法 public int countMatchingGhosts Ghost target int count 0 for int i 0
  • 在 C# 中何时使用 ArrayList 而不是 array[]?

    我经常使用一个ArrayList而不是 正常 array 当我使用时 我感觉好像我在作弊 或懒惰 ArrayList 什么时候可以使用ArrayList在数组上 数组是强类型的 并且可以很好地用作参数 如果您知道集合的长度并且它是固定的 则
  • 将 stdout 和 stderr 重定向到带有前缀的单个文件

    我正在编写一个 bash 脚本 需要重定向stdout and stderr我运行到单个文件的命令的输出 在每行前面加上前缀stderr or stdout 因此 有没有一个简单的方法可以做到这一点 from Debian http www
  • 符合 POSIX 标准的 shell 相当于 Bash“while read -d $'\0' ...”?

    我正在尝试使 Bash 脚本严格符合 POSIX 标准 即消除任何潜在的 Bashisms http mywiki wooledge org Bashism 通过使用checkbashisms px script filename 在给定的
  • 如何在VBA中将文本文件读取到数组中

    我正在尝试将制表符分隔的文本文件提取到数组中 我已经知道如何将该文本文件读入电子表格中 以下是我的代码 它运行良好 While Not EOF iFile Line Input iFile LineText Dim arr arr Spli
  • 如何将 glob 表达式分配给 Bash 脚本中的变量?

    当在 bash 脚本中执行以下两行代码时 ls 会抱怨文件不存在 dirs content dev01 dev02 ls l dirs 当我使用 x 选项运行脚本时 它似乎在单引号内传递变量 这将防止通配 dirs content dev0
  • 在退出脚本之前等待后台进程完成

    在退出脚本 TCL Bash 之前 如何确保所有后台进程已完成执行 我正在考虑将所有后台进程 pid 写入 pid 文件 然后最后 pgrep pidfile 以查看在退出之前是否有任何进程仍在运行 有一些更简单的方法可以做到这一点吗 TC
  • 将 2D 数组映射到 1D 数组

    我想用一维数组来表示一个二维数组 函数将传递两个索引 x y 和要存储的值 这两个索引代表一维数组的单个元素 并相应地设置它 我知道一维数组需要具有 arrayWidth arrayHeight 的大小 但我不知道如何设置每个元素 例如 如
  • 为什么 C 函数不能返回数组类型?

    我是 C 语言新手 想知道 为什么 C 函数不能返回数组类型 我知道数组名是数组第一个值的地址 而数组是 C 中的二等公民 您自己已经回答了这个问题 数组是二等公民 C 按值返回 数组不能按值传递 因此不能返回它们 至于为什么数组不能按值传
  • 从由空格分隔的单个输入整数列表创建二维数组

    我正在解决一些问题geeksforgeeks我遇到了一个特定的问题 其中在测试用例中提供了输入 如下所示 2 2 denotes row column of the matrix 1 0 0 0 all the elements of th
  • 在多维数组 PHP 的所有键中搜索

    我想在多维数组中的所有键中搜索特定字符串 我只需要弄清楚它是否存在 仅此而已 我想知道访问者的 IP 是否存在于任何数组中 有没有我可以用来执行此操作的 php 函数或方法 我尝试过的每个函数或方法总是返回 false 数组中 数组搜索 数
  • 如何在不同目录中启动多个窗口的 tmux?

    我想使用脚本打开一个有 6 个窗口的 tmux 会话 每个窗口位于不同的目录中 我开始于我找到的一个脚本 http blog hawkhost com 2010 07 02 tmux E2 80 93 the terminal multip
  • 从 systemd bash 内联脚本创建 filename_$(date %Y-%m-%d)

    我正在尝试执行systemd计时器并希望将执行脚本的输出保存在每个日期的文件中 这是我的ExecStart脚本中的 service file ExecStart bin bash c echo date Y m d gt gt home u
  • 在 bash 中从文件中读取星号字符 (*)

    我正在从 txt 文件中获取行 说输入 txt a b 然后我正在阅读它 bin bash file 1 ans 0 while read r line n line do echo line done lt file passing th
  • 如何将项目插入到特定索引处的空数组中?

    我想将一个项目插入到空数组的指定索引中 我看到有 Array prototype splice 方法 但是 如果我在空数组上使用 splice 它只会添加项目来结束数组 如下所示 var a a splice 3 0 item 3 cons
  • 声明一个负长度的数组

    当创建负长度数组时 C 中会发生什么 例如 int n 35 int testArray n for int i 0 i lt 10 i testArray i i 1 这段代码将编译 并且启用 Wall 时不会出现警告 并且似乎您可以分配

随机推荐

  • 如何检测何时使用 MKUserTrackingBarButtonItem

    我目前正在尝试找到一种方法来检测何时MKUserTrackingBarButtonItem被使用 除了处理mapView didUpdateUserLocation 委托方法 我尝试设置ActionMKUserTrackingBarButt
  • 在cowplot::plot_grid 的多面板图中设置单个面板的宽度和高度

    我正在使用多面板图ggplot2 and cowplot包 但我需要更改单个图的高度 最简单地用一个例子来展示 library ggplot2 library cowplot p1 lt ggplot iris aes Sepal Widt
  • 表单 Google 脚本防止重复

    我正在制作一个谷歌表单 有一个名为 name 的字段 其中包含其他字段 如标题 公司和电子邮件地址 如果数据库中已经有一个特定的人 我希望其他信息用新信息替换旧信息 即更新功能 但我在使用 Google Apps 脚本执行此操作时遇到麻烦
  • 如何在使用通用开发服务器的团队环境中使用 Coldfusion Builder 2?

    我们的 CF 9 开发环境位于通用开发服务器 DEVWEB 上 我们正在考虑从 Dreamweaver 迁移到 Coldfusion Builder 作为我们的 IDE 我担心 CF Builder 在项目根目录中放置 settings 目
  • 详细了解大量 3x3 矩阵的逆算法

    我遵循这个原始帖子 用于反转大量 3x3 矩阵的 PyCuda 代码 https stackoverflow com questions 55357826 pycuda adapt existing code and kernel code
  • 如何在 Rust 中将十六进制值转换为 Base64

    我在理解 Rust 中的特征概念时遇到一些问题 我正在尝试将一个简单的十六进制值编码为 Base64 但没有运气 这是我的代码 还有一个字符串到 Base64 的示例 extern crate serialize use serialize
  • 如何在 CAS 服务管理中注册我的 Web 应用程序?

    我的学校想要实现一个CAS服务 我做了大部分配置 但是我需要注册webapp 如何在CAS服务管理中注册webapp 或者如果您有一些可以帮助我的样本 我将非常感激 我尝试过使用 cas 管理应用程序 版本为 4 2 x 我不确定您想使用什
  • 通知 PendingIntent 意图额外内容被另一个通知覆盖

    当使用新的 PendingIntent 创建新通知时 其意图中的额外内容将覆盖任何先前通知的 PendingIntent 意图额外内容 例如 假设我使用 PendingIntent1 创建Notification1 其中包含 Intent1
  • 带动画的事件时间线

    我想要构建的是一个带有一些动画的垂直时间轴组件 我尝试的动画是从第一个圆圈开始 无论哪个项目的状态为true 垂直线都会从上到下绘制 同时无论完成哪个步骤 当线穿过它时 都会从圆形变为已完成的复选标记 我怎样才能实现上面的动画 到目前为止我
  • 应用平移变换时 UICollectionViewFlowLayout 边缘单元消失

    我正在使用自定义UICollectionViewFlowLayout使单元格在到达顶部时缩放和淡出 为此 我正在应用alpha and transform到布局属性 这是我的代码 完整演示存储库的链接 https github com ah
  • CK编辑器。打开具有默认值的图像属性窗口

    我一直在查看 API 但不知道如何使用默认 url 打开图像对话框 我用execCommand函数 如下 var editor CKEDITOR instances editor1 editor execCommand image 这很好用
  • 大虾:目录及页码

    我需要用 Prawn 创建一个目录 我有add dest我的代码中的函数调用和 目录中的右侧链接 add dest Komplett dest fit page count 1 and text Vollstaendiges Mitglie
  • Android Studio中的Git消失了?

    当我右键单击我的 Android Studio 项目 在 Android 视图中 时 我曾经有一个 Git 子菜单 在那里我可以拉 推等等 然而 不知何故 Git 菜单现在已经消失了 因此 我既不能推也不能拉 我可以在哪里再次启用该功能 试
  • 报告中空手道测试套件的运行时间

    我正在使用空手道 9 0 0 并并行运行功能文件并生成 使用空手道并行运行代码的黄瓜报告 问题是 在功能概述的报告中 其显示的总执行时间为 功能 1 执行时间 功能 2 执行时间 功能 3 执行时间 总执行时间 但如果我在超过 1 个线程中
  • Facebook 60 天访问令牌和已弃用的 Offline_Access

    Facebook 的 已弃用的离线访问 文档 http developers facebook com docs offline access deprecation http developers facebook com docs of
  • 从 uitableviewcell 拖放到 ios 中的 uiimage 视图

    我需要帮助实现拖放手势 我想知道您的意见以找到最佳方法 我有一个视图控制器 右侧有一个 uitableview 左侧有一些图像视图 我想允许用户将表视图的每个单元格拖动到图像视图之一上 基本上 如果单元格未在图像视图之一上释放 则拖放将会失
  • 电子邮件分机和工作流程/管道 - 某些令牌未扩展?

    我正在尝试在 Jenkins 管道作业中使用 email ext 插件 但是在自由式作业中使用 email ext 时我认为理所当然的大多数令牌都没有被扩展 e g node emailext body DEFAULT CONTENT mi
  • python - 绘图地保存没有空格的表

    i generate a table in python with plotly and i save it as png but the saved png has a lot of whitespace i there a soluti
  • 如何使用 .htaccess 文件将所有流量从一个域重定向到另一个域?

    假设我有一个子域xxx yyy com运行阿帕奇 文件存储在 home someone public html xxx 我想要做的是将所有请求重定向到一个域名zzz com它的文件使用相同的位置 换句话说 xxx yyy com and z
  • Bash:计算关联数组中键的总数?

    考虑下面的关联数组 declare A shapingTimes shapingTimes 0 start 15 0 stop 21 0 anotherkey foo shapingTimes 1 start 4 1 stop 6 1 an