bash数组的用法

一、单纯数组

bash 复制代码
#!/usr/bin/env bash

#1、定义一个空数组
my_array=()

#2、增。使用 `+=` 运算符将元素添加到数组的末尾
my_array+=("value1")
my_array+=("value2")
my_array+=("value3")

#3、增。还可以使用一行的方式一次性添加多个元素到数组
my_array+=("value4" "value5" "value6")


#4、读。读取数组
echo ${my_array[1]}    # 输出:value2
echo ${my_array[*]}    # 输出:value1 value2 value3 value4 value5 value6
echo ${my_array[5]}    # 输出:value6

#5、读。使用 '#' 可以获取数组的长度
length=${#my_array[@]}
echo $length  # 输出:6


#6、读。使用 for 循环遍历数组元素并输出
for i in ${my_array[@]}; do
  echo $i
done

echo '-----------分割线1--------------'

#7、 读。可以使用 ':' 来定义数组的切片范围
slice=("${my_array[@]:2:4}")  # 获取从第3个开始切,切出来4个
echo "${slice[@]}"  # 输出:value3 value4 value5 value6

echo '-----------分割线2--------------'
#8、 删。使用 unset 命令删除指定索引上的元素
unset my_array[1]
echo ${my_array[*]}    # 输出:value1 value3 value4 value5 value6

echo '-----------分割线3--------------'
#9、改。将数组的第一个元素值改成hello world
my_array[0]="hello world"
echo "${my_array[*]} 长度:${#my_array[@]}"    # 输出:hello world value3 value4 value5 value6 长度:5
echo ${my_array[0]}    # 输出:hello world。 注意bash不会用空格来区分每个元素,只是显示的时候看起来好像是用空格区分每个元素

二、key & value 型数组

bash 复制代码
#!/usr/bin/env bash


# 定义一个关联数组
declare -A my_assoc_array
my_assoc_array["mykey1"]="value1"
my_assoc_array["key2"]="value2"
my_assoc_array["key3"]="value3"

echo ${my_assoc_array[@]}  #输出:value1 value3 value2
echo '--------'
# 修改关联数组中的元素
my_assoc_array["key2"]="new_value"

# 遍历关联数组,检查元素是否修改
for key in "${!my_assoc_array[@]}"; do
  echo "$key: ${my_assoc_array[$key]}"
done
#输出:
# mykey1: value1
# key3: value3
# key2: new_value


echo '--------'
echo ${my_assoc_array['key3']}  #输出:value3
# 注意不能使用索引来读取数据


echo '--------'
unset my_assoc_array["mykey1"]
echo ${my_assoc_array[@]}   #输出:value3 new_value
相关推荐
闲人编程2 分钟前
CAPL概述与环境搭建
开发语言·自动化测试·数据分析·capl·canoe·故障注入·canalyzer
网硕互联的小客服17 分钟前
云服务器加了安全组端口还是无法访问
开发语言·php
倔强的石头10627 分钟前
【C++经典例题】求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句
开发语言·c++
九离十30 分钟前
C语言教程——指针进阶(1)
c语言·开发语言
DevOpsDojo34 分钟前
Julia语言的软件工程
开发语言·后端·golang
编程|诗人40 分钟前
Kotlin语言的数据结构
开发语言·后端·golang
羊小猪~~1 小时前
C/C++语言基础--C++STL库算法记录(质变算法、非质变算法、查找、排序、排列组合、关系算法、集合算法、堆算法等)
c语言·开发语言·数据结构·c++·算法·stl
2401_898410691 小时前
JavaScript语言的学习路线
开发语言·后端·golang
luochen330x1 小时前
C++类的引入
java·开发语言
敖行客 Allthinker1 小时前
Ruby JSON 性能优化之旅:深入挖掘与持续改进
开发语言·后端·ruby