shell - shell script如果文件已经存在,就删除文件

  显示原文与译文双语对照的内容

我正在处理存储在文件中数据的数据,但是,每次运行脚本时,它都会附加到前面的文件。

如果它已经存在,我要如何删除文件?

时间:

如果文件存在,不要费心检查,只是尝试删除它。


rm -f /p/a/t/h


# or


rm /p/a/t/h 2> /dev/null



但是,更有可能的是,如果你的脚本是使用>>重定向到文件中的,那么更可能是,用>替换>> ,很难说,因为你没有提供任何代码。

请注意,你可以执行如下操作 test -f /p/a/t/h && rm /p/a/t/h 但是这样做完全没有意义,测试可能是return true,但是,在尝试删除之前/p/a/t/h将失败,或者更糟糕的是,测试失败后会在执行下一个命令,别这么做。

你可以使用:


#!/bin/bash



file="file_you_want_to_delete"



if [ -f $file ] ; then


 rm $file


fi



如果要忽略检查文件的步骤,则可以使用简单的命令,如果存在,则不会引发错误。


 rm -f xyz.csv



像这样的可以工作


#!/bin/sh



if [ -fe FILE ]


then 


 rm FILE


fi 



-f检查是否为常规文件

-e检查文件是否存在

关于更多信息的介绍

编辑:-e使用-f是多余的,使用-f就可以工作,

[ -f file ] && rm file

或者使用变量:


#!/bin/bash



file="/path/to/file.ext"


[ -f $file ] && rm $file



if [ $( ls <file> ) ]; then rm <file>; fi

另外,如果使用>重定向输出,而不是>>,它将覆盖以前的文件,

...