shell 未能在鱼体内建立通用压缩功能

fslejnso  于 2023-05-01  发布在  Shell
关注(0)|答案(1)|浏览(71)

我在linux上使用fish shell,我想写一个适用于大多数压缩文件格式的函数,我写的是:

function ex
    if test -f $argv[1]
        switch (file $argv[1])
            case '*.tar.bz2'
                tar xjf $argv[1]
            case '*.tar.gz' '*.tgz'
                tar xvf $argv[1]
            case '*.bz2'
                bunzip2 $argv[1]
            case '*.rar'
                unrar x $argv[1]
            case '*.gz'
                gunzip $argv[1]
            case '*.tar'
                tar xf $argv[1]
            case '*.tbz2'
                tar xjf $argv[1]
            case '*.zip'
                unzip $argv[1]
            case '*.Z'
                uncompress $argv[1]
            case '*.7z'
                7z x $argv[1]
        end
    else
        echo "'$argv[1]' is not a valid file"
    end
end

然而,当我把这个应用到焦油上时。fish shell中的gz文件,没有给出错误,但也没有提取。然后当我试图tar xjf文件,,它被提取。...
这让我困惑了一段时间,请帮助。

cetgtptt

cetgtptt1#

您正在根据file命令的结果而不是名称进行切换。

相关问题