Bash Script if else...

2015-11-05 14:42:35 +08:00
 KyL

我想写一个 bash 脚本,可以根据不同的压缩格式来处理压缩文件。测试的时候,永远只能跳到第一个 if block 里。请问这个脚本有什么问题呢?

fname=$1
params=$@
ext=${fname##*.}
echo "file extension is $ext";

if [ "$ext"="gz" ]
then
    echo "tar xzvf $params"
    tar xzvf $params
    exit 0
elif [ "$ext"="xz" ]
then
    echo "tar xvjf $params"
    tar xvj $params
    exit 0
elif [ "$ext"='bz2' ]
then
    echo "tar xvjf $params"
    tar xvjf $params 
    exit 0
else
    echo "could not extract"
    exit 1
fi
1694 次点击
所在节点    问与答
6 条回复
Havee
2015-11-05 15:43:33 +08:00
你这是一次性解压一个文件夹内的所有压缩包?
if ... fi 执行一次就结束了

你应该循环的对每一个压缩包执行解压操作, for ... in 比较合适
Havee
2015-11-05 15:46:37 +08:00
用 for in
然后每一次循环都用 case in 来匹配
yangg
2015-11-05 15:51:48 +08:00
lululau
2015-11-05 16:05:05 +08:00
等号两边加空格
sinxccc
2015-11-05 16:08:38 +08:00
tar xf <filename>

虽然好像有点跑题…
lhbc
2015-11-05 16:27:50 +08:00
tar axf 就可以了,自动识别文件。哈哈哈

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/233847

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX