好吧,在花了很长时间开发一个准备好测试的脚本之后,我现在了解到目标环境没有mkstemp
(我愚蠢地相信每个 unix-y 操作系统都有),它似乎也没有任何其他常见的 temp-文件实用程序。如果有任何其他广泛可用的临时文件命令,请告诉我,但我认为我没有任何可用的。
所以,这意味着我需要实现mkstemp
自己的一种形式。现在最简单的方法是这样的tmp="/tmp/tmp.$$.$RANDOM"
,虽然它可以工作,但不能保证文件名不会发生冲突,所以我需要对此进行测试,但问题是在测试文件和创建文件之间,该文件最终可能会意外创建,因此它也可能不是合适的方法,至少就其本身而言。
在过去,我必须实现一个与lockfile
我自己等效的功能,我可以通过使用一个临时文件mv
作为作弊移动到适当的位置来做到这一点(如果它返回错误,那么锁已经存在)。我倾向于认为如果文件已经存在,我可能会使用一些将失败的操作来做类似的事情,但我不确定最好的方法是什么。
我知道使用/tmp/tmp.$$.$RANDOM
不太可能导致冲突,但如果可以的话,我想正确实现这一点,因为脚本需要创建大量临时文件,然后将这些文件移动到位,我可能需要这样做稍后在其他脚本中也是如此,所以正确地执行它会很好!
编辑:我刚刚意识到我一直在指代mktemp
任何地方,而不是mkstemp
我真正想要复制的那个(为您安全创建文件的地方)。我想我已经纠正了错误的提及,请原谅混乱!