shell脚本中的错误处理

时间:2015-06-04 12:55:12

标签: 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;

1 个答案:

答案 0 :(得分:2)

如果shell为bash,您可以在循环之前允许*扩展为空字符串:shopt -s nullglob

顺便说一句,你可能想要明确指定要生成的未压缩文件名,以防你的逻辑与gunzip完全不一致(如果你的逻辑中有多个点,它可能不会完全一致)名称或文件以.tgz.taz)结尾:

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

(在这种情况下,你需要自己删除原件)

您也可以避免移动:

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

您可能希望使用trap来确保在失败的情况下清理您的临时工(也可以在$TMPDIR中制作您的临时工具。)