数组

一、数组概念

所谓数组,是无序的元素序列。 若将有限个类型相同的变量的集合命名,那么这个名称为数组名。组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量。用于区分数组的各个元素的数字编号称为下标。数组是在程序设计中,为了处理方便, 把具有相同类型的若干元素按无序的形式组织起来的一种形式。 这些无序排列的同类数据元素的集合称为数组。<摘自百度>

二、数组使用方法
1、赋值
(1)一次只赋值一个元素

ARRAY_NAME[INDEX]=VALUE

(2)一次赋值全部元素

ARRAY_NAME=("VAL1" "VAL2" "VAL3"...)

(3)只赋值特定元素

ARRAY_NAEM=([0]="VAL1" [3]="VAL2"...)

(4)交互式数组值对赋值

read -a ARRAY

2、引用变量的方法
(1)引用数组元素

${ARRAY_NAME[INDEX]}

注意:省略[INDEX]表示引用下标为0的元素。
(2)引用数组中所有元素

${ARRAY_NAME[*]}
${ARRAY_NAME[@]}

(3)数组中元素的个数

${#ARRAY_NAME[*]}
${#ARRAY_NAME[@]}

(4)删除数组中的某元素

unset ARRAY[INDEX]

(5)删除整个数组

unset ARRAY

3、数组数据处理
(1)引用数组中的元素

数组切片:${ARRAY[@]:offset:number}
    offset:要跳过的元素个数
    number:要取出的元素个数
取出偏移量之后的所有元素
    ${ARRAY[*]:offset}

(2)向数组中追加元素
ARRAY[${#ARRAY[*]}]=VALUE
注意:数组中元素个数与数组引用下标少1。
4、关联数组

declare -A ARRAY_NAME #定义为关联数组
ARRAY_NAEM=([idx_name]=val [idx_name]=val2)
declare -a 查看所有定义数组

注意:关联数组必须事先要声明。
示例:

[root@localhost~]#test[0]=hello #一次赋一个值
[root@localhost~]#test=([2]=hi [3]=boy) #只赋特定的值
[root@localhost~]#test1=(haha xixi heihei ) #一次赋值全部元素
[root@localhost~]#read -a test2#交互式赋值 
[root@localhost~]#declare -a #查看所有的数组
declare -a BASH_ARGC='()'
declare -a BASH_ARGV='()'
declare -a BASH_LINENO='()'
declare -a BASH_SOURCE='()'
declare -ar BASH_VERSINFO='([0]="4" [1]="1" [2]="2" [3]="2" [4]="release" [5]="x86_64-redhat-linux-gnu")'
declare -a DIRSTACK='()'
declare -a FUNCNAME='()'
declare -a GROUPS='()'
declare -a PIPESTATUS='([0]="0")'
declare -a test='([2]="hi" [3]="boy")'
declare -a test1='([0]="haha" [1]="xixi" [2]="heihei")'
declare -a test2='([0]="I")'
 [root@localhost~]#echo ${test[*]} #显示数组所有元素
hello hi boy
[root@localhost~]#echo ${#test[*]} #显示元素个数
3
[root@localhost~]#unset test[2] #删除数组中某个元素
[root@localhost~]#echo ${test[*]} 
hello boy
[root@localhost~]#unset test #删除某个数组所有元素
[root@localhost~]#echo ${test1[*]:1:1} #数组切片
[root@localhost~]#test1[${test1[*]}]=joah #向数组中追加元素

示例:生成10个随机数保存于数组中,并找出其最大值和最小值。

#!/bin/bash
#
declare -a rand
i=0
declare -i max=0
declare -i min
while [ $i -lt 10 ];do
    rand[$i]=$RANDOM
    [ $i -eq 0 ] && min=rand[$i]
    [ ${rand[$i]} -gt $max ] && max=`echo ${rand[$i]}`
    [ ${rand[$i]} -lt $min ] && min=`echo ${rand[$i]}`
    let i++
done
echo Max is $max
echo Min is $min
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值