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