为什么计数变量不计数递归?

时间:2019-03-06 19:56:09

标签: linux bash shell sh

我的脚本必须解压缩压缩文件。如果目标文件是文件夹,我将尝试这样做->解压缩其中的所有内容。

这是我的代码: *更新-我已经通过shellcheck修复了

#!/bin/bash
#unpack
INPUTS=$@
R=false
V=false
declare -a TOTALCOUNT
toecho=0
declare -a FILES

function decompress_by_file_type()
{
    case $(file --mime-type -b "$file") in
        application/zip) unzip -oq "$file" 
                 echo 0 ;;
        application/x-bzip2) bunzip2 -dkfq "$file"
                 echo 0 ;;
        application/gzip) uncompress -fq "$file" 
                 echo 0 ;;
        application/gzip) gunzip -q "$file"
                 echo 0 ;;
        inode/directory) 
                 decompress_all_in_folder ;;
    esac
}

function decompress_all_in_folder()
{
    cd "$file"
    for file in *
    do
        if [ "$(decompress_by_file_type)" == 0 ]; then
            TOTALCOUNT+=(1) 
        fi  
    done
}

function get_user_input()
{
    for input in $INPUTS 
    do
        case $input in
            -r)
                R=true ;;
            -v) 
                V=true ;;
             *)
                FILES+=("$input") ;;
        esac
    done

    for file in "${FILES[@]}"
    do  
        case $(file --mime-type -b "$file") in
        inode/directory) 
                 decompress_all_in_folder ;;
        *)
                if [ "$(decompress_by_file_type)" == 0 ]; then
                    TOTALCOUNT+=(1) 
                fi ;;
        esac
    done
}

function calculate_arr_values()
{
    get_user_input
    for i in "${TOTALCOUNT[@]}"
    do
        toecho=$((toecho+i))
    done
    echo "$toecho"
}


echo "Decompressed $(calculate_arr_values) archive(s)"        

实际上-它确实解压缩了每个文件。但是由于某些原因,输出计数不正确。 输出(最后一个回显)仅显示解压缩的文件数-仅显示第一个文件夹。 如您所见,我确实依赖于每个部分。 我究竟做错了什么?

0 个答案:

没有答案