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
相关推荐
LDR0062 天前
Type-C 快充全面升级!LDR6601 赋能个人护理便携电机,重塑剃须刀 / 理发器新体验
c语言·开发语言
雪碧聊技术2 天前
Tree.js是什么?一文讲透
开发语言·javascript·ecmascript
码云数智-园园2 天前
C++20 Modules 模块详解
java·开发语言·spring
swordbob2 天前
NIO的channel中什么是 fd(File Descriptor,文件描述符)
java·开发语言·nio
源分享2 天前
Java线程同步的多种实现方法(非常详细)
java·开发语言·jvm
Luminous.2 天前
C语言--day30
c语言·开发语言
何以解忧,唯有..2 天前
Go语言循环语句详解:for、range与循环控制
开发语言·算法·golang
謓泽2 天前
C语言不是语法,是通往机器的地图。
c语言·开发语言
云水一下2 天前
从零开始学 PHP 系列(一):PHP 的前世今生与开发环境搭建
开发语言·php
飞天狗1112 天前
零基础JavaWeb入门——第五课第二小节:九大内置对象 · 第2个:response(响应对象)
java·开发语言