博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
linux学习之shell遍历数组
阅读量:4044 次
发布时间:2019-05-24

本文共 1884 字,大约阅读时间需要 6 分钟。

     和其他编程语言一样, 也支持数组。数组(Array)是若干数据的集合,其中的每一份数据都称为元素(Element)。

Shell 并且没有限制数组的大小,理论上可以存放无限量的数据。和 、、 等类似,Shell 数组元素的下标也是从 0 开始计数。
     获取数组中的元素要使用下标[ ],下标可以是一个整数,也可以是一个结果为整数的表达式;当然,下标必须大于等于 0。
遗憾的是,常用的 Bash Shell 只支持一维数组,不支持多维数组。

Shell 数组的定义

在 Shell 中,用括号( )来表示数组,数组元素之间用空格来分隔。由此,定义数组的一般形式为:

array_name=(ele1  ele2  ele3 ... elen)

注意,赋值号=两边不能有空格,必须紧挨着数组名和数组元素。

下面是一个定义数组的实例:

nums=(29 100 13 8 91 44)

Shell 是弱类型的,它并不要求所有数组元素的类型必须相同,例如:

arr=(20 56 "http://c.biancheng.net/shell/")

第三个元素就是一个“异类”,前面两个元素都是整数,而第三个元素是字符串。

Shell 数组的长度不是固定的,定义之后还可以增加元素。例如,对于上面的 nums 数组,它的长度是 6,使用下面的代码会在最后增加一个元素,使其长度扩展到 7:

nums[6]=88

此外,你也无需逐个元素地给数组赋值,下面的代码就是只给特定元素赋值:

ages=([3]=24 [5]=19 [10]=12)

以上代码就只给第 3、5、10 个元素赋值,所以数组长度是 3。

获取数组元素

获取数组元素的值,一般使用下面的格式:

${array_name[index]}

其中,array_name 是数组名,index 是下标。例如:

n=${nums[2]}

表示获取 nums 数组的第二个元素,然后赋值给变量 n。再如:

echo ${nums[3]}

表示输出 nums 数组的第 3 个元素。

使用@*可以获取数组中的所有元素,例如:

${nums[*]}${nums[@]}

两者都可以得到 nums 数组的所有元素。

完整的演示:

#!/bin/bashnums=(29 100 13 8 91 44)echo ${nums[@]} #输出所有数组元素nums[10]=66 #给第10个元素赋值(此时会增加数组长度)echo ${nums[*]} #输出所有数组元素echo ${nums[4]} #输出第4个元素

运行结果:

29 100 13 8 91 4429 100 13 8 91 44 6691

####################################################################################################

shell中数组的定义及遍历,先直接看示例:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

#!/bin/sh

#定义方法一 数组定义为空格分割

arrayWen=(a b c d e f)

#定义方法二

arrayXue[0]="m"

arrayXue[1]="n"

arrayXue[2]="o"

arrayXue[3]="p"

arrayXue[4]="q"

arrayXue[5]="r"

#打印数组长度

echo ${#arrayWen[@]}

#for 循环遍历

for var in ${arrayWen[@]};

do

    echo $var

done

#while循环遍历

i=0

while [[ i -lt ${#arrayXue[@]} ]]; do

    echo ${arrayXue[i]}

    let i++

done

 

数组定义可以有两种方式

方式一

1

2

#定义方法一 数组定义为空格分割

arrayWen=(a b c d e f)

方式二

1

2

3

4

5

6

7

#定义方法二

arrayXue[0]="m"

arrayXue[1]="n"

arrayXue[2]="o"

arrayXue[3]="p"

arrayXue[4]="q"

arrayXue[5]="r"

如同java的数组一般,无法定义未知长度的数组,必须得指定长度,无论是通过下标还是直接通过元素。

获取数组长度

1

${#arrayWen[@]}

转载地址:http://ypwci.baihongyu.com/

你可能感兴趣的文章
Android中AsyncTask的简单用法
查看>>
解决跨网场景下,CAS重定向无法登录的问题(无需修改现有代码)
查看>>
java反编译命令
查看>>
activemq依赖包获取
查看>>
概念区别
查看>>
final 的作用
查看>>
在Idea中使用Eclipse编译器
查看>>
idea讲web项目部署到tomcat,热部署
查看>>
Idea下安装Lombok插件
查看>>
zookeeper
查看>>
Idea导入的工程看不到src等代码
查看>>
技术栈
查看>>
Jenkins中shell-script执行报错sh: line 2: npm: command not found
查看>>
8.X版本的node打包时,gulp命令报错 require.extensions.hasownproperty
查看>>
Jenkins 启动命令
查看>>
Maven项目版本继承 – 我必须指定父版本?
查看>>
通过C++反射实现C++与任意脚本(lua、js等)的交互(二)
查看>>
利用清华镜像站解决pip超时问题
查看>>
[leetcode BY python]1两数之和
查看>>
微信小程序开发全线记录
查看>>