【Shell语言】shell数组详解


Shell数组

Shell数组定义

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

Shell 并且没有限制数组的大小,理论上可以存放无限量的数据。和 C++、Java、C# 等类似,Shell 数组元素的下标也是从 0 开始计数。

获取数组中的元素要使用下标[ ],下标可以是一个整数,也可以是一个结果为整数的表达式;当然,下标必须大于等于 0。

遗憾的是,常用的 Bash Shell 只支持一维数组,不支持多维数组。

格式

数组名称=(元素1 元素2 元素3 ...)

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

nums=(29 100 13 8 91 44)

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

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

数组赋值方式

  • 一次附一个值

变量名=变量值

array[0]=v1
array[1]=v2
array[3]=v3
  • 一次附多个值
array=(var1 var2 var3 var4)
array1=(`cat /etc/passwd`)			//将文件中每一行赋值给array1数组
array2=(`ls /root`)
array3=(harry amy jack "Miss zhang")
array4=(1 2 3 4 "hello world" [10]=linux)

数组取值

取值方式: ${数组名称[索引]}

索引:

默认情况下索引是指数组中的元素[存的值]在数组中的顺序,从0开始计数,关联数组除外。比如:

array=(var1 var2 var3 var4)
array数组中存有4个元素,分别是:var1 var2 var3 var4

那么我想取出var2这个元素,那么就得先看看他在数组中的位置,数组中的元素索引如下:

	元素	var1 var2 var3 var4
	索引	0     1     2    3

所以正确表示array数组中元素var2的方式是:${array[1]}

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

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

数组取值练习

${array[i]}  i表示元素的索引
使用@ 或 * 可以获取数组中的所有元素:
获取第一个元素
echo ${array[0]}
echo ${array[*]}			获取数组里的所有元素
echo ${#array[*]}			获取数组里所有元素个数
echo ${!array[@]}    	获取数组元素的索引索引
echo ${array[@]:1:2}    访问指定的元素;1代表从索引为1的元素开始获取;2代表获取后面几个元素

数组传参

主要有两点

使用 ${array_name[*]} 或 ${array_name[@]} 传递所有数组元素
使用 $1 获取参数的值时 要用 (),变成数组,也就是 array=($1)

在Shell中,调用函数时可以向其传递参数。在函数体内部,通过 $n 的形式来获取参数的值,例如,$1表示第一个参数,$2表示第二个。

注意,$10 不能获取第十个参数,获取第十个参数需要${10}。当n>=10时,需要使用${n}来获取参数。


在这里插入图片描述

  • 15
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值