我正在开发在 Linux 机器 (Debian) 上运行的自动化脚本。这些脚本从调度程序启动,并在其自己的目录中操作文件。
在脚本结束时,我需要删除临时文件。
目前,我有这样的事情:
#check that some variables are not empty
if [[ -z $var1 || -z $var2 || -z $var3 ]]; then
echo "Some var is empty"
exit 1
fi
workingdir=$var1/$var2
#some checks on working directory
if [[ ! -d $workingdir ]]; then
echo "Directory error"
exit 1
fi
cd $workingdir
if [[ $(pwd) != $workingdir ]]; then
echo "Change directory error"
exit 1
fi
#...here goes the main part of the script
#and at the end, the "cleaning"
if [[ -d $workingdir/temp/$var3 ]]; then
find $workingdir/temp/$var3 -delete;
fi
您有什么想法可以帮助我降低删除错误内容的风险吗?
谢谢。
问候
答案1
您的脚本知道创建了哪些文件以及它们在哪里。
这个一般性陈述在这里很重要。如果您确实只想删除您创建的文件,请跟踪您创建的文件。因此,您通常会这样做:
TMP1=$(mktemp -t example.1.XXXXXX)
TMP2=$(mktemp -t example.2.XXXXXX)
创建临时文件(请参阅man mktemp
详细信息),然后执行
rm -f "$TMP1" "$TMP2"
当您处理完临时文件后。或者,您可以创建一个临时目录并删除它。
你不应该做的是
rm -f /tmp/example.?.*
因为它也会删除脚本的其他正在运行实例的临时文件。