1.shell数组的基本概念
同其他的变成语言一样,shell也支持数组,数组时若干数据的集合,其中每一份的数据都称为元素。
shell数组理论上没有限制数组的大小,数组元素的下标是从0开始
获取数组的元素要使用下标[ ],下标可以是一个整数,也可以是一个结果为整数的表达式
常用的bash shell只支持一维数组,不支持多维数组
2.shell数组的定义
在shell中,用括号()来表示数组,数组元素之间用空格来分隔
- 用小括号将变量值括起来赋值给数组变量
array=(1 2 3)
- 用小括号将变量值括起来,同时通过键值对的方式赋值给数组
a=([1]=one [2]=two [3]=three)
- 用赋值的方式来定义数组
a[1]=four
- 动态的定义数组变量,并使用命令的输出结果作为数组的内容
mkdir /array -p
touch /array/{1..3}.txt
c=($(ls /arry))
3.shell数组的输出
(1)a=(1 2 3)
输出:echo $a
输出结果 1
(2)输出数组所有元素
输出:echo ${a[*]}
输出:echo ${a[@]}
输出结果:1 2 3
(3)输出数组的某个元素
echo ${a[0]} 输出数组a的第一个元素
echo ${a[1]} 输出数组a的第二个元素
(4)指定输出数组的特定元素
echo ${a[@]:0:2} ##输出数组a 的第一个元素开始,输出两个元素
输出结果:1 2
(5)替换数组中的指定元素
echo ${a[@]/1/b} ##将数组中的元素为1替换为b
echo ${a[*]}
输出结果:b 2 3
注:打印数组的元素时,未指定数组下标,则从0开始,指定时,就从指定下标开始。
数组元素赋值时,如果下标不存在时,则增加一个元素,若下标存在时,会覆盖原来的元素
4.数组实例
#!/bin/bash
array={
westos
linux
redhat
python
}
for ((i=0;i<${#array[*];i++}))##判断数组的长度用${#array[*]}
do
echo "this is num $i,content is ${array[$i]}"
done
echo @@@@@@@@@@@@@@@
echo "array len :${#array[*]}"
运行结果: this is num 0,content is westos
this is num 1,content is linux
this is num 2,content is redhat
this is num 3,content is python
@@@@@@@@@@@@@@@
array len :4
来源:CSDN
作者:sunshinew427
链接:https://blog.csdn.net/qq_42024433/article/details/104317489