我在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
文件,,它被提取。...
这让我困惑了一段时间,请帮助。
1条答案
按热度按时间cetgtptt1#
您正在根据
file
命令的结果而不是名称进行切换。