linux 修改数组长度限制,linux之shell数组的使用

在shell中,数组是一种特殊的数据结构。数组中的每一项被称为元素,元素可以通过索引方式取出其值。只支持一维数组,对元素个数没有限制,因为shell变量是弱类型,所以并不要求每个元素都是相同类型。

1.数组定义

1.1使用declare命令定义

使用declare命令先定义数组,再初始化。赋值时元素的数据类型不同.数组的索引从0开始,与java相同。

[test@node1 ~]$ declare -a Array1

[test@node1 ~]$ Array1[0]=1

[test@node1 ~]$ Array1[1]='a'

使用declare命令定义数组同时初始化,且初始化后还可改变数组大小。注意对所有元素同时初始化时,值之间使用空格。

[test@node1 ~]$ declare -a Array2=(1 'b')

[test@node1 ~]$ Array2[2]='a'

1.2不使用declare命令

不使用declare命令的语法如下:

[test@node1 ~]$ Array3=(1 'b')

还可以给特定的元素赋值,例如:对第5个位置和第10个位置的元素赋值:

[test@node1 ~]$ Array3=([4]=4 [9]=5)

2.数组操作

2.1 数组取值

数组取值的格式为:${数组名[索引]};例如取第2个元素的值

[test@node1 ~]$ test_array=('a' 1 'c' 'd')

[test@node1 ~]$ echo ${test_array[1]}

1

若想取出所有的值,使用以下两种方式:

[test@node1 ~]$ Array1=(1 'a')

[test@node1 ~]$ echo ${Array1[*]}

1 a

[test@node1 ~]$ echo ${Array1[@]}

1 a

从表面上看,两者并没什么区别,但是A

r

r

a

y

1

[

@

]

{Array1[@]}得到的是以空格隔开的元素值;而Array1[@]得到的是以空格隔开的元素值;而{Array1[*]}输出的是一整个字符串。

2.2 数组长度

数组长度:即数组元素个数。利用"@“或”*“字符,将数组扩展成列表,然后使用”#"来获取数组元素的个数。例如:

[test@node1 ~]$ echo ${#Array1[@]}

2

[test@node1 ~]$ echo ${#Array1[*]}

2

2.3 数组截取

数组截取:截取整个数组或某个元素的一部分。例如:

取出数组的第一个,第二个元素

[test@node1 ~]$ my_array=(1 'a' 'HelloWorld')

[test@node1 ~]$ echo ${my_array[@]:1:2}

a HelloWorld

取出第三个元素从第0个字符开始连续5个字符

[test@node1 ~]$ echo ${my_array[2]:0:5}

Hello

2.4 连接数组

连接数组:若干个数组进行拼接操作

[test@node1 ~]$ Conn=(${Array1[@]} ${my_array[@]})

[test@node1 ~]$ echo ${Conn[@]}

1 a 1 a HelloWorld

2.5 替换数组

替换数组:将数组内某个元素的值进行替换

[test@node1 ~]$ Array1=(1 'a')

[test@node1 ~]$ Array1=(${Array1[@]/a/b})

[test@node1 ~]$ echo ${Array1[@]}

1 b

2.6 取消数组或元素

取消数组或元素使用的命令为unset

[test@node1 ~]$ Array1=(1 'a')

[test@node1 ~]$ unset Array1[1]

[test@node1 ~]$ echo ${Array1[@]}

1

[test@node1 ~]$ unset Array1

[test@node1 ~]$ echo ${Array1[@]}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值