Linux:脚本内的安全递归删除

Linux:脚本内的安全递归删除

我正在开发在 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.?.*

因为它也会删除脚本的其他正在运行实例的临时文件。

相关内容