Проблема с внешним интерфейсом сжатых файлов
Мне нужно создать интерфейс для сжатых файлов, идея в том, что если вы получаете файл 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