我有以下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;
答案 0 :(得分:2)
如果shell为bash
,您可以在循环之前允许*
扩展为空字符串:shopt -s nullglob
。
gunzip
完全不一致(如果你的逻辑中有多个点,它可能不会完全一致)名称或文件以.tgz
或.taz
)结尾:
gunzip -c "$file" >"$flname"
(在这种情况下,你需要自己删除原件)
您也可以避免移动:
flname="${fl%%.*}-NxDWeb2"
您可能希望使用trap
来确保在失败的情况下清理您的临时工(也可以在$TMPDIR
中制作您的临时工具。)