shell(十三)shell数组

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/wzj_110/article/details/100541819

一   Shell数组

概念:数组是各种数据类型的元素按照一定顺序排列的集合!组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量。

数组是一个特殊的变量

数组就是把有限个元素变量或数据用一个名字命名,然后用编号区分它们的变量的集合。这个名字称为数组名,编号称为数组下标

关键字:数组名;数组下标

数组的分类:Bash中支持一维的下标数组变量键值数组变量

几点说明

(1)任何变量都可以作为下标数组来使用;

(2)内部命令declear 可以显式的声明一个数组

(3)数组的元素个数不受限制,也不限制数组的下标或赋值时要连续

(4)下标数组使用整数算术表达式来访问元素

扫描二维码关注公众号,回复: 7208266 查看本文章

(5)下标从零开始,而键值数组使用任意字符串来访问元素

二    数组的定义

# 数组的一种定义形式

array=(1 2 3 4)

# 取数组的长度-->注意写法

echo ${#array[@]}

echo ${#array[*]}

# 打印数组-->数组下标从0开始

# 打印数组元素用${数组名[下标]}

echo ${array[0]}

# 打印所有的数组

echo ${array[*]} 

echo ${array[@]} 

相同的名字引用一系列的变量,并用数字(索引)来识别它们!

需求1:给任意变量赋值就自动创建了一个下标数组

# 数组名[下标]=值

array[0]=1

# 说明:数组赋值的形式增加变量

需求2:显式的声明一个数组

declare -a 数组名  # a-->array

需求3:定义数组和循环打印

#!/bin/bash
#(1)定义数组-->大于一两个的变量的时候
array=(
172.25.2.1
172.25.2.2
172.25.2.3
)
#(2)循环打印数组
for ip in ${array[@]}
do
echo $ip
done

:<<EOF
for((i=0;i<${#array[@]};i++))
do
  echo ${array[i]}
done 
EOF

需求4:增加和删除数组

array=(1 2 3) 
# 添加
array[3]=4 
# 修改
array[1]=10
# 删除
unset array[0]

需求5:把命令结果放到数组,然后打印

# 体会这种用法

array=($(ls))

echo ${array[*]}

# 把系统命令结果作为数组元素

需求6:数组内容的截取和替换

# 截取
array=(1 2 3 4 5 6)
# 截取1号到3号数组元素-->类似变量的截取
echo ${array[@]:1:3}
    2 3 4
echo ${array[*]:3:2}
    4 5 

# 替换
# 需求:把数组中的5替换成88,临时生效,原数组不变
echo ${array[@]/5/88}
    1 2 3 4 88 6 

需求7:用内部命令 read 的-a选项标准输入中读取的一组单词赋给数组,也可以用它从标准输入中读取值后赋给指定的数组元素

read -a array

三    小结

(1)定义

静态数组:array=(1 2 3)

动态数组:array=($(ls))

数组赋值:array[3]=4

(2)定义

打印所有元素:${array[@]}或${array[*]}

打印数组长度:${#array[@]}或${array[*]}

打印单个元素:${array[i]},i是数组下标

猜你喜欢

转载自blog.csdn.net/wzj_110/article/details/100541819