当脚本中止时,日志对我来说并不感兴趣,因为它已经过时了。我希望它被删除。
是否可以让文件仅在脚本运行时存在并以其他方式消失?
我知道我可以编写另一个会定期删除日志的脚本,但我正在寻找更有效的解决方案。
答案 0 :(得分:2)
试试这个:
#!/bin/bash
trap 'rm /path/to/log' EXIT TERM
# ...
答案 1 :(得分:1)
除了“sputnick”提到的陷阱之外,您可能还希望该文件是显式临时的。临时文件的缺点是它可能最终会出现一条不方便的路径,如果您希望能够在命令行上执行此操作,那么这很重要。
要制作临时文件,请按以下方式使用mktemp
:
tempFile="$(mktemp "${TMPDIR:-/tmp/}$(basename "$0")-XXXXX")"
这将(a)在临时文件名中包含脚本的名称,(b)如果设置,则使用$TMPDIR
作为基本目录,但默认为/tmp
,这通常是一种好习惯。
对于trap
,我认为您应该关注的主要信号是TERM
,并且您还希望捕获伪信号EXIT
。我更喜欢将信号名称用于不那么便携的数字:
trap 'rm -f "${tempFile}"' EXIT TERM