- 我有一个脚本,每分钟将其状态记录到一个文件中。
- 然后状态栏会显示此日志的内容。
当脚本中止时,我对日志不感兴趣,因为它已经过时了。我想把它删掉。
是否有可能只有当脚本正在运行时才存在文件并且否则会消失?
我知道我可以编写另一个脚本来定期删除日志,但我正在寻找更有效的解决方案。
尝试这个 :
#!/bin/bash
trap 'rm /path/to/log' EXIT TERM
# ...
除了“sputnick”提到的陷阱之外,您可能还希望文件是明确的临时文件。临时文件的缺点是它可能会以不方便的路径结束,如果您希望能够在命令行上对其进行处理,这将很重要。
要制作临时文件,请使用mktemp
, 沿着以下几行:
tempFile="$(mktemp "${TMPDIR:-/tmp/}$(basename "$0")-XXXXX")"
这将 (a) 在临时文件名中包含脚本的名称,以及 (b)$TMPDIR
用作基本目录(如果设置但默认为/tmp
as 通常是好的做法)。
至于trap
,我认为您应该关心的主要信号是TERM
,并且您还想捕捉伪信号EXIT
。我更喜欢使用信号名称而不是它们不太便携的数字:
trap 'rm -f "${tempFile}"' EXIT TERM