Мой скрипт должен распаковывать сжатые файлы.Я пытаюсь сделать это, если целевой файл является папкой -> распаковать все внутри него.
Это мой код: * Обновление - я исправил это с помощью 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)"
На самом деле - он распаковывает каждый файл.Но по некоторым причинам количество выводов неверно.Вывод (последнее эхо) показывает мне только количество файлов, которые были распакованы - только первой папки.Как видите, я рассчитываю на каждую часть.Что я делаю неправильно?