100%纯bash解决方案:
set -o noclobber{ > file ; } &> /dev/null
file如果不存在名为的文件,则此命令将创建一个名为的文件
file。如果有一个名为的文件
file,则什么也不做(但返回一个非零的返回码)。
优点
touch:
- 如果文件已经存在,则不更新时间戳
- 内置100%bash
- 按预期返回代码:如果
file
已经存在或file
无法创建,则失败;成功,如果file
不存在并被创建。
缺点:
- 需要设置该
noclobber
选项(但是如果您对重定向很小心,或者在之后取消设置,那么在脚本中就可以了)。
我猜这种解决方案确实是使用进行
open系统调用的bash对应方式
O_CREAT | O_EXCL。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)