shell之数组

一 数组

1.1 定义数组

通过指定元素定义

array[key]=value

key代表索引,如array[1]=one,索引从0开始

echo “${array[@]}”获取所有数组元素的值。

通过declare语句定义

declare –a array

通过元素值集合定义

array={ v0 v1 v2v3}

通过键值定义

array=([0]=value0[1]=value1)

1.2 数组的赋值

按索引为元素赋值:

array[n]=value

通过集合为数组赋值

array=(a b c)

通过循环为数组元素赋值

例子:

#! /bin/bash

#通过循环为数组赋值

for i in {1..10}

do

   array[$i]=$i

done

#输出元素的值

echo"${array[@]}"

1.3 访问数组

访问第一个数组元素:

可用数组名和下标为0的元素,如echo“${array}”

通过下标访问数组元素:

下标从0开始,echo“${array[3]}”

计算数组的长度:

${#array[@]}

例子:

#! /bin/bash

#定义数组

array=(Mon Tue WedThu Fri Sat Sun)

#输出数组长度

echo "thelength of the array is ${#array[@]}"

获取某个数组元素的长度

linux[0]="Debian"

linux[1]="RedHat"

linux[2]="Ubuntu"

linux[3]="Suse"

#输出第4个元素

echo "thefourth element is ${linux[3]}"

#输出第4个元素的长度,4

echo "the length of the fourth element is${#linux[3]}"

#输出第1个元素的值

echo "thefirst element is ${linux}"

#输出第1个元素的长度

echo "the length of the first element is${#linux}"

通过循环遍历数组元素:

#! /bin/bash

array=(Mon Tue WedThu Fri Sat Sun)

#获取数组长度

len="${#array[@]}"

#通过循环结构遍历数组

for((i=0;i<$len;i++))

do

   echo "${array[$i]}"

done

 引用所有数组元素

#! /bin/bash

array=(Mon Tue WedThu Fri Sat Sun)

#通过循环输出所有的数组元素

for e in"${array[@]}"

do

   echo "$e"

done

 以切片部分获取部分数组元素

${array[@|*]:start:length}

start表示起始元素的下标,lengh表示要截取的数组元素的个数

 数组元素的替换:

并不影响原来的数组的值

${array[@|*]/pattern/replacement}

pattern表示要搜索的字符串,replacement表示用来替换的字符串

#! /bin/bash

#定义数组

a=(1 2 3 4 5)

#输出替换结果

echo "theresult is ${a[@]/3/100}"

#输出原始数组

echo "the oldarray is ${a[@]}"

#将替换结果赋给一个数组变量

a=(${a[@]/3/100})

#输出新的数组变量的值

echo "the newarray is ${a[@]}"

 1.4 删除数组

删除指定数组元素:

unset array[n]

删除整个数组

unset array

 1.5 其他操作

复制数组:

创建一个已经存在的数组的副本

如:

newarray=(“${array[@]}”)

linux=("Debian""RedHat" "Ubuntu" "Suse" "Fedora""UTS" "CentOS")

#复制数组

linux2=("${linux[@]}")

echo"${linux2[@]}"

 连接数组:

将两个数组的数组元素连接在一起,变成一个大的数组。新的数组一次包含两个数组所有元素

”$array1[@]” “${array2[@]}”

如:

#定义2个数组

linux=("Debian""RedHat" "Ubuntu" "Suse" "Fedora""UTS" "CentOS")

shell=("bash""csh" "ksh" "rsh" "sh" "rc""tcsh")

 #连接数组

linuxshell=("${linux[@]}""${shell[@]}")

 #输出合并后的数组

echo "the newarray is ${linuxshell[@]}"

#输出新的数组的长度,14

echo "thelength of new array is ${#linuxshell[@]}"

 加载文件内容到数组

用户可以将普通的文本文件的内容直接加载到数组中,文件的每一行构成数组一个元素的内容。在处理日志文件时非常有用。

如:

准备一个文本文件,demo.txt

内容为

Ubuntu

Suse

Fedora

UTS

demo.txt内容加载到一个数组中,然后将数组内容打印处理

#加载文件内容

content=(`cat"demo.txt"`)

#通过循环输出数组内容

for s in"${content[@]}"

do

   echo "$s"

done

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值