Почему переменная count не считает рекурсивлей? - PullRequest
0 голосов
/ 06 марта 2019

Мой скрипт должен распаковывать сжатые файлы.Я пытаюсь сделать это, если целевой файл является папкой -> распаковать все внутри него.

Это мой код: * Обновление - я исправил это с помощью 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)"        

На самом деле - он распаковывает каждый файл.Но по некоторым причинам количество выводов неверно.Вывод (последнее эхо) показывает мне только количество файлов, которые были распакованы - только первой папки.Как видите, я рассчитываю на каждую часть.Что я делаю неправильно?

...