当前位置: 首页 > news >正文

shell编程:求稀疏数组中元素的和(下标不连续)

#!/bin/basharr=([2]=3 [5]=2 [6]=2 [9]=1)for i in "${!arr[@]}"
dosum=$((sum+arr[i]))
doneecho $sum

 Bash 脚本中,* 和 @ 符号在数组上下文中有不同的用途。当使用它们来遍历数组时,必须了解它们之间的区别。

  1. * (无前置感叹号 !):
    • 在索引数组(indexed array)中,"${arr[*]}" 会展开成数组中的所有元素。
    • 在关联数组(associative array)中,"${arr[*]}" 是不合法的,因为关联数组没有连续的索引。
  2. @ (无前置感叹号 !):
    • 在索引数组中,"${arr[@]}" 和 "${arr[*]}" 的功能相同,都会展开成数组中的所有元素。
    • 在关联数组中,"${arr[@]}" 同样是不合法的。
  3. * (有前置感叹号 !):
    • 在索引数组中,"${!arr[*]}" 是不合法的,因为感叹号用于关联数组来获取所有的键。
    • 在关联数组中,"${!arr[*]}" 是错误的写法,正确的应该是 "${!arr[@]}",它会展开成数组中的所有键。
  4. @ (有前置感叹号 !):
    • 在索引数组中,"${!arr[@]}" 和 "${!arr[*]}" 都是不合法的,因为感叹号与 @ 或 * 结合时仅用于关联数组。
    • 在关联数组中,"${!arr[@]}" 会展开成数组中的所有键。

所以,当遍历关联数组时,应该使用 "${!arr[@]}" 来获取所有的键。

http://www.lryc.cn/news/300919.html

相关文章:

  • Rust 学习笔记 - 详解数据类型
  • 构建本地yum源
  • 常用的正则表达式,收藏必备!!!
  • js---webAPI
  • git的常用命令有哪些?
  • 《动手学深度学习(PyTorch版)》笔记8.5
  • 【蓝桥杯单片机入门记录】LED灯(附多个例程)
  • c语言简单json库
  • Linux操作系统基础(七):Linux常见命令(二)
  • 进程状态
  • STM32固件库简介与使用指南
  • 【开源】SpringBoot框架开发智能教学资源库系统
  • 融资项目——获取树形结构的数据
  • Crypto-RSA2
  • IEEE Internet of Things Journal投稿经验
  • 实例分割论文阅读之:FCN:《Fully Convolutional Networks for Semantica Segmentation》
  • apk反编译修改教程系列---简单去除apk登陆 修改vip与一些反编译基础常识【十二】
  • 网络安全习题集
  • C++中的volatile:穿越编译器的屏障
  • (07)Hive——窗口函数详解
  • 【开源图床】使用Typora+PicGo+Github+CDN搭建个人博客图床
  • 阅读笔记(SOFT COMPUTING 2018)Seam elimination based on Curvelet for image stitching
  • LinkedList数据结构链表
  • [计算机网络]---序列化和反序列化
  • [前端开发] 常见的 HTML CSS JavaScript 事件
  • H5/CSS 笔试面试考题(71-80)
  • 【Node.js】path 模块进行路径处理
  • react+ts【项目实战一】配置项目/路由/redux
  • 英文论文(sci)解读复现【NO.20】TPH-YOLOv5++:增强捕获无人机的目标检测跨层不对称变压器的场景
  • 第十五章 以编程方式使用 SQL 网关 - %SQLGatewayConnection 方法和属性