Проблема с внешним интерфейсом сжатых файлов

Мне нужно создать интерфейс для сжатых файлов, идея в том, что если вы получаете файл gz или bz2, распакуйте его с помощью gunzip и bunzip2.

Если вы получаете tar.gz или tar.b2, вы должны распаковать и распаковать его один раз с помощью tar xzf или xjf. Мой код следующий

#!/bin/bash

if test $# -ne 1
then
    echo "Numero de parametros incorrecto"
    echo "Uso del programa: $0 archivo"
    exit 1;
fi

case "$1" in
    *.gz)
        echo "gzip"
        echo "Descomprimiendo"
        `gunzip $1`
    ;;
    *.bz2)
        echo "bzip2"
        echo "Descomprimiendo"
        `bunzip2 $1`
    ;;
    *.tar.gz)
        `tar xzvf $1`
    ;;
    *.bzip2.gz)
        `tar xjvf $1`
    ;;
esac

Проблема в том, что даже если я передаю файл с расширением.tar.gz, я ввожу первое условие дела, я пытался добавить доллар, чтобы он строго заканчивался так, но он не работает

1 ответ

Решение

Измените порядок блоков кода дела и добавьте разрыв после каждого.

Как это:

#!/bin/bash

if test $# -ne 1
then
    echo "Numero de parametros incorrecto"
    echo "Uso del programa: $0 archivo"
    exit 1;
fi

case "$1" in
    *.tar.gz)
        tar xzvf "$1"
        break
    ;;
    *.bzip2.gz)
        tar xjvf "$1"
        break
    ;;
    *.gz)
        echo "gzip"
        echo "Descomprimiendo"
        gunzip "$1"
        break
    ;;
    *.bz2)
        echo "bzip2"
        echo "Descomprimiendo"
        bunzip2 "$1"
        break
    ;;
    *)
        echo "Unknown extension"
        break
    ;;
esac
Другие вопросы по тегам