我有一个shell脚本,我想添加一行或两行,只有存在时才会删除日志文件。目前我的脚本只是:
rm filename.log
但是如果文件名不存在,我会收到一条消息,说明filename.log不存在,无法删除。这是有道理的,但我不想在每次运行脚本时都看到这一点。使用IF语句是否有更聪明的方法我可以完成这项工作?
答案 0 :(得分:33)
将-f
参数传递给rm
,这将使它处理命名文件不存在成功的情况,并且在这种情况下将禁止任何错误消息:
rm -f -- filename.log
字面要求的内容更像是:
[ -e filename.log ] && rm -- filename.log
但更多的是输入并添加额外的故障模式。 (如果在[
对其进行测试之后删除了其他内容,但在rm
删除之前,那么您又会再次出现故障。
顺便说一句,--
s会导致文件名被视为文字,即使它以前导破折号开头;如果你的名字来自变量或者没有严格控制,你应该习惯性地使用这些。
答案 1 :(得分:1)
首先触摸该文件,如果该文件不存在则会创建该文件,但只有在 存在时才更改时间戳。
touch filename && rm filename
效率低,但易记。
答案 2 :(得分:0)
if [ ! -f 'absolute path of file' ]
then
echo "File does not exist. Skipping..."
else
rm 'absolute path of file'
fi
如果您使用以下内容,则应该可以使用。
答案 3 :(得分:0)
您可以使用
rm -rf my/dir || true