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 小时前
力扣算法 1768. 交替合并字符串
java·开发语言·算法·leetcode·职场和发展·idea·基础
naruto_lnq4 小时前
分布式系统安全通信
开发语言·c++·算法
学嵌入式的小杨同学4 小时前
【Linux 封神之路】信号编程全解析:从信号基础到 MP3 播放器实战(含核心 API 与避坑指南)
java·linux·c语言·开发语言·vscode·vim·ux
Re.不晚5 小时前
Java入门17——异常
java·开发语言
精彩极了吧5 小时前
C语言基本语法-自定义类型:结构体&联合体&枚举
c语言·开发语言·枚举·结构体·内存对齐·位段·联合
南极星10056 小时前
蓝桥杯JAVA--启蒙之路(十)class版本 模块
java·开发语言
baidu_247438616 小时前
Android ViewModel定时任务
android·开发语言·javascript
Dev7z6 小时前
基于 MATLAB 的铣削切削力建模与仿真
开发语言·matlab
不能隔夜的咖喱6 小时前
牛客网刷题(2)
java·开发语言·算法
小天源6 小时前
Error 1053 Error 1067 服务“启动后立即停止” Java / Python 程序无法后台运行 windows nssm注册器下载与报错处理
开发语言·windows·python·nssm·error 1053·error 1067