V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
KyL
V2EX  ›  问与答

Bash Script if else...

  •  
  •   KyL · 2015-11-05 14:42:35 +08:00 · 1562 次点击
    这是一个创建于 3094 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我想写一个 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
    
    6 条回复    2015-11-05 16:27:50 +08:00
    Havee
        1
    Havee  
       2015-11-05 15:43:33 +08:00
    你这是一次性解压一个文件夹内的所有压缩包?
    if ... fi 执行一次就结束了

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

    虽然好像有点跑题…
    lhbc
        6
    lhbc  
       2015-11-05 16:27:50 +08:00 via Android   ❤️ 1
    tar axf 就可以了,自动识别文件。哈哈哈
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5520 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 06:48 · PVG 14:48 · LAX 23:48 · JFK 02:48
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.