前言只是作為一個shell的小小練習和日常統計用,瞎折騰的過程中也是摸到了獲取子shell返回值的幾種方法;肯定還有別的方法,跟進程間的通信相關,希望你能提出建議和補充,謝謝~ 完整程式: bash ! /bin/bash 檢查參數數量是否符合要求if [ $ ne 1 ]then echo Ho....
前言
只是作為一個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返回值的其它方法:
使用管道
#這段放在while之前 if [ ! -p npipe ] then mkfifo -m 777 npipe fi #替換掉獲得ftype值那裡 ( file -b "$fileinfo" | cut -d , -f 1 > npipe & ) read ftype<npipe
使用臨時文件
#替換掉獲得ftype值那裡 ( file -b "$fileinfo" | cut -d , -f 1 )>temp.txt read ftype<temp.txt
使用HERE文檔
#替換掉獲得ftype值那裡 read type << HERE `file -b "$fileinfo" | cut -d , -f 1` HERE