5.shell脚本基础笔记-shell变量之数组

作者: 温新

分类: 【Laravel】

阅读: 2880

时间: 2022-02-27 13:41:34

hi,我是温新,一名PHPer

坚持很难,很多人走着走着就不见了...

数组是一种数据结构,可以将多个元素按照顺序保存,使用时根据索引访问指定元素。数组索引下标从0开始。

定义数组的方式

declare -a定义

# 方式1
declare -a arr1
arr[0]=a
arr[1]=b

# 方式2
declare -a arr1=(a b)

() 直接定义

arr2=(a b c d)

带下标的定义

arr3[0]=a
arr3[1]=b

使用数组

语法:${数组名[索引]}

根据下标获取数组元素

fruits=(apple grape ornage peach)

# 获取数组元素
echo ${fruits[1]}

不指定索引则获取下标为0的元素

echo ${fruits}

获取数组中元素个数

语法:${#数组名[@]}

echo ${#fruits[@]}

数组相关操作

使用索引进行赋值

语法:[索引]=值

在shell数组中,元素下标可以是不连续的,空出的下标元素值为空,如下案例:

colors=(yellow green [3]=blue [5]=gray black)

echo ${colors[3]}
echo ${colors[4]} # 空

获取所有数组元素值

使用*@作为索引访问数组可以获取数组中所有元素的值。

echo "${colors[@]}"

获取所有数组元素索引

语法:${!数组名[*]}${!数组名[@]}

echo "${!colors[@]}"

修改元素的值

语法:数组名[索引]=新值

colors[3]=pink

添加数组元素

语法:${数组名[@]},组合使用可以在原数组的头部或尾部添加新的元素,并创建新的数组元素。

1)在数组 头部 添加新元素

arr5=(e f g h)

# 数组头部添加元素
# 注意一定要使用双引号
arr5=(a b "${arr5[@]}")

2)在数组 尾部 添加元素

arr5=("${arr5[@]}" z y)
# 或
arr5+=(zz yy)

3)获取所有数组元素

echo "${arr5[@]}"

赋值数组

arr6=("${arr5[@]}")

删除数组元素

命令:unset

unset arr5[0]

获取部分数组元素

语法:${数组名:数值:长度}

colors=(gray black green orange pink)
echo ${colors[@]:1:2}

关联数组

语法:declare -A 。关联数组必须使用此语法。

创建关联数组

declare -A users=([id]=5 [name]=lucy)

访问关联数组元素

echo ${users[name]}

获取关联数组元素个数

echo ${#users[@]}

更新数组元素值

users[name]=hanny

获取所有数组元素

echo "${users[@]}"

获取关联数组中的键

echo "${!users[@]}"

删除数组元素

unset users[id]
请登录后再评论