数组的使用及简单练习

文章目录

  • 一、声明
  • 二、赋值
  • 三、显示所有数组
  • 四、引用
  • 五、删除
  • 六、处理
  • 七、追加
  • 八、关联数组(必须先声明)
  • 九、小练习

一、声明

普通数组: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" 

你可能感兴趣的:(#,精华)