惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

M
MIT News - Artificial intelligence
雷峰网
雷峰网
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Last Week in AI
Last Week in AI
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
阮一峰的网络日志
阮一峰的网络日志
月光博客
月光博客
博客园 - Franky
腾讯CDC
T
Tailwind CSS Blog
Recent Announcements
Recent Announcements
V
V2EX
N
Netflix TechBlog - Medium
量子位
Jina AI
Jina AI
Y
Y Combinator Blog
The GitHub Blog
The GitHub Blog
G
Google Developers Blog
爱范儿
爱范儿
博客园 - 叶小钗
D
Docker
MongoDB | Blog
MongoDB | Blog
D
DataBreaches.Net
T
The Blog of Author Tim Ferriss

孤熵小狼

兆芯开先C+ 4701初考古 | 孤熵小狼 重设GoPro Hero 3/3+的Wi-Fi密码 | 孤熵小狼 在WindowsARM设备上使用STM32Link | 孤熵小狼 回顾2024,展望2025 | 孤熵小狼 「福瑞福瑞福·新年特辑」随记 | 孤熵小狼 解除HP ProDesk 400G1 小主机的处理器限制 | 孤熵小狼 「FurryGooo·雾海秘境」随记 | 孤熵小狼 通过DRBD实现NFS的高可用 | 孤熵小狼 手动处理DRBD脑裂问题 | 孤熵小狼 通过Docker部署Zerotier Planet服务端 | 孤熵小狼 正则表达式小笔记 | 孤熵小狼 Shell小笔记(四) | 孤熵小狼 Shell小笔记(二) | 孤熵小狼 Shell小笔记(一) | 孤熵小狼 Mac软件推荐 | 孤熵小狼 PowerBook G4 12吋(初代铝本)维护 | 孤熵小狼 使用Github Pages搭建个人博客 | 孤熵小狼 卡诺基RTX2060S矿卡流水账 | 孤熵小狼 「回忆」联想M73小主机的流水账 | 孤熵小狼
Shell小笔记(三) | 孤熵小狼
标签 · 2023-10-11 · via 孤熵小狼

数组的类型

普通数组

  • 索引:通常是从0开始的整数,表示数组中的位置
    • 例如,第一个元素的索引是0,第二个元素的索引是1,依此类推
  • 元素:存储在数组中的实际值,每个索引对应一个元素值
    • 例如,my_array[0] 表示数组中的第一个元素。
  • 普通数组使用可不声明(declare -a [数组名]
1
2
3
my_array=("apple" "banana" "cherry")


关联数组

  • 索引:在关联数组中,索引是字符串,而不是整数

    • 每个索引表示一个键,它与一个特定的元素值相关联。
    • 与普通数组最大的区别,其由特定格式的键值对组成
  • 元素:元素是与索引关联的值

    • 关联数组中的每个索引都映射到一个元素值。
  • 使用前必须声明(declare -A [数组名]

1
2
3
4
5
6
declare -A fruit_colors
fruit_colors["apple"]="red"
fruit_colors["banana"]="yellow"
fruit_colors["cherry"]="red"


数组的定义

直接定义

格式为 array_name=(value1 value2 ... valueN)

1
array=(a b c)

索引定义

格式为 array_name=( [1]=value1 [2]=value2 ... [N]=valueN )

1
array=([1]=a [2]=b [3]=c)

数组的取值

要访问数组中的值,可以使用${数组名[索引]}

读取索引

这用于获取数组的索引(或键),而不是数组元素本身

echo ${!array[*]} :视为整体

echo ${!array[@]} :视为个体

读取数值

返回的是数组中的所有元素,不包括索引

echo ${array[*]} :视为整体

echo ${array[@]} :视为个体

特定元素

echo ${array[0]} :访问数组的第一个元素

echo ${array[@]:1} :表示从索引 1 开始,包括索引 1 及之后的所有元素

echo ${array[@]:1:2} :从第二个元素开始,访问连续的两个元素

其他用法

echo ${#array[@]} : 获取数组中的元素个数(数组的长度)

echo ${#array[n]} :获取数组第n个元素的字符个数

数组的遍历

通过索引

  • 如:循环以索引 i 来迭代数组 array
  • 适合需要根据元素的索引处理数组元素的情况
1
2
3
4
5
6
#!/bin/bash
names=(Tom Jeny David)
for (( i=0;i<${#names[*]};i++ ))
do
echo ${names[$i]}
done

通过元素

  • 如:循环迭代数组 array 中的每个元素,并将每个元素赋值给变量 i
  • 适合需要依次访问数组元素的情况
1
2
3
4
5
6
7
8
#!/bin/bash
names=(Tom Jeny David)
index=0
for i in ${names[@]}
do
echo "第${index}个元素的值为:${i}"
let index++
done

数组删切替

删除

使用unset array[index]命令,可以删除数组中的特定元素

  • array 是数组名
  • index 是索引

切片

使用 ${array[@]:start:length} 命令,可对数组进行切片

  • start 是起始索引
  • length 是要包括的元素的数量

替换

使用 ${array[@]/old/new} 命令,可对数组的某个特定元素进行全量替换

  • array是数组名
  • old 是需要替换的元素
  • new 是替换后的元素

刃刃

趁年轻,多闯荡

本文是原创文章,采用CC BY-NC-SA 4.0协议,完整转载请注明来自孤熵小狼