linux – 在意外的bash退出中删除创建的临时文件

我从一个bash脚本创建临时文件。我在处理结束时删除它们,但由于脚本运行了相当长的时间,如果我杀了它或只是CTRL-C在运行期间,临时文件不会被删除。
有没有办法我可以捕获这些事件和清理文件,然后执行结束?

此外,有没有某些类型的最佳实践的命名和位置的那些临时文件?
我目前不确定使用之间:

TMP1=`mktemp -p /tmp`
TMP2=`mktemp -p /tmp`
...

TMP1=/tmp/`basename $0`1.$$
TMP2=/tmp/`basename $0`2.$$
...

或者也许有更好的解决方案?

最佳答案
您可以设置“trap”在退出时执行或在控制c上执行以清除。

trap "{ rm -f $LOCKFILE }" EXIT

或者,我最喜欢的unix-isms之一是打开一个文件,然后删除它,而你还有它打开。文件保留在文件系统上,您可以读取和写入文件,但一旦程序退出,文件就会消失。不知道你会怎么做在bash,虽然。

BTW:一个参数我会赞成mktemp,而不是使用自己的解决方案:如果用户期望你的程序将创建巨大的临时文件,他可能想要设置“TMPDIR”到更大的地方,如/ var / tmp。 mktemp认识到,你的手动解决方案(第二个选项)不。我经常使用“TMPDIR = / var / tmp gvim -d foo bar”,例如。

转载注明原文:linux – 在意外的bash退出中删除创建的临时文件 - 代码日志