zoukankan      html  css  js  c++  java
  • 统计文件种类数+获取子shell返回值的其它方法

    前言

    只是作为一个shell的小小练习和日常统计用,瞎折腾的过程中也是摸到了获取子shell返回值的几种方法;
    肯定还有别的方法,跟进程间的通信相关,希望你能提出建议和补充,谢谢~

    完整程序:

    #! /bin/bash
    #检查参数数量是否符合要求
    if [ $# -ne 1 ]
    then
         echo How to use: $0 ---> basepath!
         exit -1
    fi
    #获取传入的路径参数
    path=$1
    #声明一个关联数组
    declare -A typearray
    
    while read fileinfo
    do
        ftype=`file -b "$fileinfo" | cut -d , -f 1`
        let typearray["$ftype"]++
    done< <( find $path -type f -print )
    
    echo '==File==Type==Stastics=='
    for ftype in "${!typearray[@]}"
    do
         echo $ftype : ${typearray["$ftype"]}
    done
    

    获取子shell返回值的其它方法:

    1. 使用管道
    #这段放在while之前
    if [ ! -p npipe ]
    then mkfifo -m 777 npipe
    fi
    #替换掉获得ftype值那里
    ( file -b "$fileinfo" | cut -d , -f 1 > npipe & )
    read ftype<npipe
    
    1. 使用临时文件
    #替换掉获得ftype值那里
    ( file -b "$fileinfo" | cut -d , -f 1 )>temp.txt
    read ftype<temp.txt
    
    1. 使用HERE文档
    #替换掉获得ftype值那里
    read type << HERE
    `file -b "$fileinfo" | cut -d , -f 1`
    HERE
    
  • 相关阅读:
    5、Android Service测试
    javassist示例
    HeaderExchangeClient
    dubbo 心跳
    javassist和jdk动态代理
    dubbo为consumer创建代理
    线程同步知识点
    SynchronousQueue类
    Executors类的newFixedThreadPool, newCachedThreadPool, newScheduledThreadPool
    eclipse设置条件断点
  • 原文地址:https://www.cnblogs.com/annsshadow/p/5153872.html
Copyright © 2011-2022 走看看