1
  • 我有一个脚本,每分钟将其状态记录到一个文件中。
  • 然后状态栏会显示此日志的内容。

当脚本中止时,我对日志不感兴趣,因为它已经过时了。我想把它删掉。

是否有可能只有当脚本正在运行时才存在文件并且否则会消失?

我知道我可以编写另一个脚本来定期删除日志,但我正在寻找更有效的解决方案。

4

2 回答 2

2

尝试这个 :

#!/bin/bash

trap 'rm /path/to/log' EXIT TERM

# ...
于 2013-03-22T00:10:19.940 回答
1

除了“sputnick”提到的陷阱之外,您可能还希望文件是明确的临时文件。临时文件的缺点是它可能会以不方便的路径结束,如果您希望能够在命令行上对其进行处理,这将很重要。

要制作临时文件,请使用mktemp, 沿着以下几行:

tempFile="$(mktemp "${TMPDIR:-/tmp/}$(basename "$0")-XXXXX")"

这将 (a) 在临时文件名中包含脚本的名称,以及 (b)$TMPDIR用作基本目录(如果设置但默认为/tmpas 通常是好的做法)。

至于trap,我认为您应该关心的主要信号是TERM,并且您还想捕捉伪信号EXIT。我更喜欢使用信号名称而不是它们不太便携的数字:

trap 'rm -f "${tempFile}"' EXIT TERM
于 2013-03-22T00:31:30.780 回答