2015-06-04 85 views
0

我有以下shell脚本。如果文件夹中没有文件,则会引发以下错误。那么,我们如何处理这个问题,以便脚本不会停止执行?在shell脚本中处理错误

错误:

mv: cannot stat `*': No such file or directory 

脚本:

for file in * 
    do 
     fl=$(basename "$file")    
     flname="${fl%%.*}"    
     gunzip "$file" 
     mv "$flname" "$flname-NxDWeb2" 
     tar -zcf "$flname-NxDWeb2".tar.gz "$flname-NxDWeb2" 
     rm "$flname-NxDWeb2" 
done; 

回答

2

如果shell bash,你可以让*扩大为空字符串:你的循环之前shopt -s nullglob

顺便说一句,如果你的逻辑不完全符合gunzip(如果名称中有多个点,它可能不会完全符合),你可能想明确指定未压缩的文件名,该文件与.tgz.taz结束):

gunzip -c "$file" >"$flname" 

(你将需要删除自己原来在此情况下,虽然)

你可以不用移动,也:

flname="${fl%%.*}-NxDWeb2" 

而且您可能需要使用trap以确保您的临时对象在故障情况下被清除(可能使您的临时对象也在$TMPDIR中)。