【发布时间】:2017-05-09 23:22:10
【问题描述】:
我是 linux 新手,虽然我熟悉脚本中锁定文件的概念,但我在另一个脚本中遇到了该代码,并认为它非常酷,尽管我不知道它是如何工作的。有没有人能详细了解一下 cleanup file 和 finalize 函数在做什么?
与锁文件的 if else 语句相反
cleanup_file="$(mktemp -q)"
finalize()
{
set +e
if test -f "$cleanup_file"
then
while read f
do
unlink "$f"
done < "$cleanup_file"
unlink "$cleanup_file"
fi
}
trap 'finalize' HUP INT QUIT TERM EXIT
【问题讨论】:
-
为了使您的问题有意义,必须在您的脚本中使用使用
cleanup_file="$(mktemp -q)"创建的temp文件。trap调用finalize(基本上是在脚本退出或以其他方式被杀死时)。大概有符号链接写入临时文件,这是finalize函数摆脱的。