我的脚本必须解压缩压缩文件。如果目标文件是文件夹,我将尝试这样做->解压缩其中的所有内容。
这是我的代码: *更新-我已经通过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)"
实际上-它确实解压缩了每个文件。但是由于某些原因,输出计数不正确。 输出(最后一个回显)仅显示解压缩的文件数-仅显示第一个文件夹。 如您所见,我确实依赖于每个部分。 我究竟做错了什么?