首页 > 系统相关 >shell数组-1

shell数组-1

时间:2024-02-05 18:32:46浏览次数:29  
标签:dirs arr shell 数组名 定义方法 数组 目录

    近期在目录遍历时突然想到了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

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






标签:dirs,arr,shell,数组名,定义方法,数组,目录
From: https://blog.51cto.com/chier11/9612001

相关文章

  • FlubuCore 用C#写cmd/shell脚本
    1.在解决方案下新建项目BuildScript2.在BuildScript项目下新建BuildScript.cs文件 3.Nuget安装FlubuCore包 4.BuildScript.cs内容usingSystem;usingSystem.IO;usingSystem.Linq;usingSystem.Collections.Generic;usingFlubuCore.Context;usingFlubuCore.Conte......
  • PowerShell 可以帮助你获取挂载映像的服务列表
    PowerShell可以帮助你获取挂载映像的服务列表。这可以通过使用Windows的DeploymentImageServicingandManagement(DISM)工具来完成,DISM工具是一个命令行工具,它允许你服务Windows映像,包括那些用于WindowsPE、WindowsRecoveryEnvironment(WindowsRE)和WindowsS......
  • 树状数组
    【树状数组是什么】树状数组(BinaryIndexedTree,BIT)支持单个元素修改和前缀查询。比较一下:子段和修改单个元素数组\(O(n)\)\(O(1)\)前缀和\(O(1)\)\(O(n)\)树状数组\(O(\logn)\)\(O(\logn)\)【树状数组的实现】比如\(a\)数组有16个元素......
  • 34 数组操作符的重载
    数组访问的一些思考string类最大限度地考虑了C字符串的兼容性。可以按照使用C字符串的方式适应string对象。#include<iostream>#include"add.h"usingnamespacestd;intmain(void){strings="safbd1334";intn=0;for(inti=0;i<s.length()......
  • 数据结构之——数组
    数组数据结构的基本类型之一,它可以构成其他数据结构,如栈、队列、哈希表、树、图、堆、矩阵、张量。数组在内存中的存储方式为一片连续的内存空间,其基本操作与其他数据结构一致,即所谓的增删改查。废话不多说,上代码加以理解。Java类型实现classarray{publicstaticvoid......
  • 乘积小于k的子数组
    问题描述:给定一个正整数数组nums。找出该数组内乘积小于k的连续的子数组的个数。示例1:输入:nums=[10,5,2,6],k=100输出:8解释:8个乘积小于100的子数组分别为:[10],[5],[2],[6],[10,5],[5,2],[2,6],[5,2,6]。需要注意的是[10,5,2]并不是乘积小于100的......
  • 长度最小的子数组
    问题描述:给定一个含有n个正整数的数组和一个正整数s,找出该数组中满足其和≥s的长度最小的连续子数组。如果不存在符合条件的连续子数组,返回0。示例:输入:s=7,nums=[2,3,1,2,4,3]输出:2解释:子数组[4,3]是该条件下的长度最小的连续子数组。进阶:如果你......
  • PowerShell 中使用相关命令管理 FFU(Full Flash Update)映像
    PowerShell中使用相关命令管理FFU(FullFlashUpdate)映像的示例:获取系统中的Windows映像信息:powershellCopyCodeGet-WindowsImage挂载指定的Windows映像:powershellCopyCodeMount-WindowsImage-ImagePath"C:\path\to\image.ffu"-Index1-Path"C:\mount"......
  • 【pwn】pwnable_start --只有read和write函数的getshell
    首先查一下程序的保护情况保护全关!!!然后看ida逻辑ida的结果很简洁,只有一段汇编代码,我们再来看看nc情况现在我们来分析一下汇编代码 mov  ecx,esp            ;addr.text:08048089B214            mov  dl......
  • shell脚本和makefile的异同
    一直有这个疑惑,今天特地查了查,粘在这里。这是别人,要是以后自己发现了别的不同,在继续写。还有,最后两条还不是很明白,可能没用过吧,在Makefile可以调用shell脚本,但是Makefile和shell脚本是不同的。本文试着归纳一下Makefile和shell脚本的不同。1、shell中所有引用以$打头的变量其后......