再shell脚本中将zip压缩文件解压,文件后缀名为.gz,解压命令为gunzip test.gz,打印shell日志,发现gunzip test.gz命令确实被打印,也就是说业务逻辑正常,打印$?,结果为0,尝试在gunzip test.gz前后添加sleep 5s命令,压缩文件仍然没有被解压,但是这个问题是偶发的,不做任何修改,删除test.gz并重新下载后,再执行shell却正常执行。文件大小不到1k,问题是偶发的。
mv ${locDir}${locFileName} ${locDir}${locFileName}.gz
echo $(ls ${locDir})
echo "gunzip ${locDir}${locFileName}.gz"
sleep 5s
gunzip ${locDir}${locFileName}.gz
echo $?
bash -x 观察下执行过程,是不是文件名有特殊符号啥的
gzip 命令:
# gzip test.txt
它会将文件压缩为文件 test.txt.gz,原来的文件则没有了,解压缩也一样
# gunzip test.txt.gz
它会将文件解压缩为文件 test.txt,原来的文件则没有了,为了保留原有的文件,我们可以加上 -c 选项并利用 linux 的重定向
# gzip -c test.txt > /root/test.gz
这样不但可以将原有的文件保留,而且可以将压缩包放到任何目录中,解压缩也一样
# gunzip -c /root/test.gz > ./test.txt
看一下这些例子用对了没,或者就换一种解压方式,用unzip,
望采纳,谢谢!
——王文峯