rm -rf 直到成功

rm -rf 直到成功

我有一个部署脚本,它会在继续之前删除 tmp 文件夹中的所有文件,但有时在部署过程中,某个进程会使用其中一个 tmp 文件,从而导致命令rm失败。我的脚本如下所示

rm -rf app/tmp
tar -xf app.tar

这太过简单了,请不要试图建议改进部署过程,这完全是一个关于命令的rm问题

我正在考虑类似的事情

# pseudo code
while [[ ! rm -rf app/tmp ]]; do sleep 1; done
tar -xf app.tar

换句话说:继续尝试删除文件夹,直到没有人在那里添加文件,然后继续脚本。

您知道在 bash 中允许这样做的语法吗?

目前脚本失败并且从未提取 tar 文件。

感谢您的输入。

答案1

循环while不比较任何东西。它需要匹配某些东西;在本例中,我们想知道目录是否存在。如果存在,则使用 删除它rm,否则如果不存在,则退出循环并运行tar命令。您不想在条件rm内使用该命令while

# pseudo code
while [[ -d app/tmp ]]; do rm -rf app/tmp; sleep 1; done
tar -xf app.tar

答案2

看起来我在另一个问题“如何在 bash 中运行命令直到成功”中找到了答案

https://stackoverflow.com/a/5274386/2296642

我应该使用until语法。

until rm -rf app/tmp; do echo trying again; done
tar -xf app.tar

相关内容