Shell编程---数组学习总结

概述
  1. 为什麽会产生Shell数组?
    通常在开发Shell脚本时,定义变量采用的形式为“a=l;b=2;C=3”,可如果有多个 变量呢?这时再逐个地定义就会很费劲,并且要是有多个不确定的变量内容,也会难以 进行变量定义,此外,快速读取不同变量的值也是一件很痛苦的事情,于是数组就诞生 了,它就是为了解决上述问题而出现的。
  2. 什麽是Shell数组?
    Shell的数组就是一个元素集合,它把有限个元素(变量或字符内容)用一个名字来 命名,然后用下标编号对它们进行区分。这个名字就称为数组名,用于区分不同内容的编 号就称为数组下标。组成数组的各个元素(变量)称为数组的元素,有时也称为下标变量。
数组的声明

怎样声明一个数组变量?假设数组的变量名为array。

  1. 直接赋值(根据数组的下标编号进行赋值)
array[0]="a" 
array[1]="b"
array[3]="c"
  1. 结合关键字declare 进行声明
declare -a array
  1. 小括号空格法(最常用)
array=("a" "b" "c")
  1. 引号空格法
array="a b c d e"
  1. 混合法
array=([0]="a" [1]="b" [2]="c")
数组的长度

在shell中如何获取数组的长度?假设数组的变量名为array。

#获取整个数组的长度
echo ${#array[@]}
echo ${#array[*]}

------------------------------------------------------------------------------

# 获取数组单个元素的长度(i表示数组元素的下标)
echo ${#array[i]}
数组的值

在shell中如何获取数组的值?假设数组的变量名为array。

#获取数组某个下标(元素)的值:
echo ${array[i]}

------------------------------------------------------------------------------

#获取整个数组(即所有元素)的值:
echo ${array[@]}
数组的遍历

在shell中如何遍历一个数组?假设数组的变量名为array。

  1. 标准for循环
for  ((i=0;i<=${#array[@];i++}))
do
	echo ${array[i]}
done
  1. for…in…循环
for value in ${array[@]}
do
	echo ${value}
done
数组的删除
#删除数组中的某个元素;其中i表示数组元素的下标
unset array[i]  

------------------------------------------------------------------------------

#删除整个数组
unset array

将命令的结果赋值给数组

file_array=(`ls`)    或者   file_array=($(ls))

数组的切片(数组的提取)
#定义一个数组array
array=("a" "b" "c" "d" "e" "f")

#获取数组的长度
[ yuki@myhost ~  ] echo ${#array[@]}
6
[ yuki@myhost ~  ] echo ${#array[*]}
6

#获取数组下标为1的元素的值
[ yuki@myhost ~  ] echo ${array[1]}
b

#获取数组的所有值
[ yuki@myhost ~  ] echo ${array[@]}
a b c d e f


#从数组下标为n开始切片到下标为m的地方,包前n下标的值不包后m下标的值
# 语法:echo ${array[@]:n:m}

[ yuki@myhost ~  ] echo ${array[@]:0:3}
a b c
[ yuki@myhost ~  ] echo ${array[@]:0:4}
a b c d

#从数组下标为m开始切片到数组末尾,包括m下标的值
# 语法:echo ${array[@]:m}
[ yuki@myhost ~  ] echo ${array[@]:1}
b c d e f
[ yuki@myhost ~  ] echo ${array[@]:5}
f
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值