bash脚本将ZIP文件转换为tar.gz(或tar.bz2)时出错
我把下面的Bash脚本保存为一个 zip2tar 可执行文件。
#!/bin/bash
if [ "$1" = "j" ]; then
unzip -p $2.zip | tar -jcvf $2.tar.bz2 --files-from=-
else
unzip -p $2.zip | tar -zcvf $2.tar.gz --files-from=-
fi
我把下面这个ZIP文件下载下来:https://github.com/fernandotcl/pa-applet。随后运行:
./zip2tar x pa-applet-master
在脚本的 tar 部分,我遇到了一连串错误,基本都是提示:未找到文件。有没有办法用简单的 bash 脚本来实现?
先感谢你的帮助!
解决方案
试试这个脚本(命名为zip-to-tar,在Ubuntu上测试通过):
#!/bin/bash
if test "${2##*.}" = gz; then
flag=z
elif test "${2##*.}" = bz2; then
flag=j
else
echo "Unknow extension in filename [$2]."
exit
fi
dir=$(mktemp -d) file=$(realpath $2)
unzip "$1" -d "$dir" && tar ${flag}cvf "$file" -C "$dir" .
rm -rf "$dir"
# example : zip-to-tar test.zip /tmp/test.tar.gz
# example : zip-to-tar test.zip /tmp/test.tar.bz2
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。