压缩文件前端的问题

压缩文件前端的问题

我需要为压缩文件制作一个前端,想法是如果你收到一个 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

更改 case 代码块的顺序并在每个代码块后添加一个 break。

像这样:

#!/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

相关内容