欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

数组的使用及简单练习

程序员文章站 2024-02-08 14:33:40
...

一、声明

普通数组:declare -a ARRAY (不必须声明,可直接使用)
关联数组:declare -A ARRAY(必须声明后才可使用)
二者不可相互转化

二、赋值

1、一次赋值一个元素

a[0]=‘abc’
a[1]='123

2、一次赋值全部元素

a=(“a” “b” “c”…)
a=({1…10})
a=(*.sh)

3、只赋值特定元素

a=([0]=“a” [3]=“c”)

4、交互式赋值

read -a ARRAY (用空格隔开)

三、显示所有数组

declare -a

四、引用

${ARRAY[n]} (若不指定下表,则为ARRAY[0])
${ARRAY[|@]} (显示所有)
${#ARRAY[
]}(数组的个数)

五、删除

删除单个:

unset ARRAY[n]

删除整个:

unset ARRAY

六、处理

跳过前n个,取后面m个

${ARRAY[*]:n:m}

例如:跳过前两个,取后面所有

echo ${ARRAY[*]:2}

七、追加

ARRAY[${#ARRAY[*]}]=value

八、关联数组(必须先声明)

**好处:**下标可自定义

declare -A name
name[ceo]=li
name[cto]=zhang
name[coo]=wang

九、小练习

1、求10个随机数的数组中,最大与最小值
①、非简化版(自己写的)

#!/bin/bash
n[0]=$RANDOM
max=${n[0]=$RANDOM}
min=${n[0]=$RANDOM}
for i in {1..9};do
    n[i]=$RANDOM
    if [ ${n[i]} -gt $max ];then
        max=${n[i]}
    elif [ ${n[i]} -lt $min ];then
        min=${n[i]}
    fi
done
    echo ${n[*]}
    echo $max
    echo $min

②、简化版

#!/bin/bash
for i in {0..9};do
    n[i]=$RANDOM
    [ $i -eq 0 ] && max=${n} && min=${n} && continue
    [ ${n[i]} -gt $max ] && max=${n[i]}
    [ ${n[i]} -lt $min ] && min=${n[i]}
done
    echo ${n[*]}
    echo $max
    echo $min

②、求当前目录下所有偶下标的行数和

#!/bin/bash
line=0
num=(/data/*)
for i in $(seq 0 $[${#num[*]}-1]);do
    if [ $[$i%2] -eq 0 ];then
        let line+=$(wc -l ${num[i]}|cut -d' ' -f1)
    fi
done
echo "line:$line" 
相关标签: # 精华