shell中的数组

隐身守侯 提交于 2020-02-15 02:15:07

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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!