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