0
点赞
收藏
分享

微信扫一扫

shell数组-1

    近期在目录遍历时突然想到了shell中数组的概念于是乎就把需要遍历的目录结构存放到数组中,然后再取数组中值--也就是目录,做统计目录大小或文件数量使用。在该项目中目录结构非常清晰,具体目录为/年份/月份/日期/小时/相应固定的目录,比如/2019/01/31/23/xunjian/*.jpg

数组定义方法

######以下6种方法………………
定义方法1----空格分隔法赋值全部元素
数组名=( value0 value1 value2 value3 ......)
arr=(1 2 3 4 5) # 注意是用空格分开,不是逗号!!


定义方法2----下标法
数组名=([0]=value [1]=value1 [2]=value2 ....)
array
array[0]="a"
array[1]="b"
array[2]="c"


衍生出来以下三种
定义方法3----先定义列表,再引用列表的值定义数组
列表名="value0 value1 value2 value3 ...... "
数组名=($列表名)


定义方法4-----一次只赋值一个元素
数组名[0]="value1"
数组名[1]="value2"
数组名[2]="value3"


定义方法5-----read -a 交互式
read -a 数组名
要输入的内容 #数组内容 
echo ${数组名[@]} #查看 



实际应用脚本

1、生成遍历的目录,存放到数组中

###根据实际情况生成目录结构,存放到数组中。
#!/bin/bash

function Yeild_Traveral_Dir() {
    year="2019"
    i=0
    #
    for cmonth in {01..12}; do
        for cday in {01..31}; do
            for chonr in {00..23}; do
                dirn="/$year/$cmonth/$cday/$chonr"
                echo "MySequence_: $i is MyDir_: $dirn"
                dirs_arr[$i]=$dirn
                let i++
            done
        done
    done

echo "arr's num is : ${#dirs_arr[@]}"
#echo "arr's all elem : ${dirs_arr[@]}"

}

Yeild_Traveral_Dir

2、历数组中的目录---多种方法

###遍历数组方法很多,此处介绍两种
#方法1
function Traverval_All_Dir1() {
    n=0
    while [ $n -lt ${#dirs_arr[@]} ]; do
        echo "first@@@@@@@@" $n ${dirs_arr[$n]}
        let n++
    done

}
Traverval_All_Dir1

#方法2
function Traverval_All_Dir2() {
    for ((m=0;m<${#dirs_arr[@]};m++)); do
        echo "second########" $m ${dirs_arr[$m]}
    done

}

Traverval_All_Dir2

后面会继续使用该脚本进行需要统计的目录大小和文件数。






举报

相关推荐

0 条评论