我在部署我们代码的其中一台测试服务器上有一个 bash 函数,但其中一个命令经常失败,我们找不到原因。我们只是重试,直到它起作用。
如果该命令失败,我想让该函数重试。在函数中,我做了这样的事情:
command_to_run || { echo "failed, retrying"; call_function; }
Run Code Online (Sandbox Code Playgroud)
它像我想要的那样再次调用该函数,但它也允许该函数继续执行。如何在再次调用之前停止当前函数的执行?
这是@terdon 建议的一个更简单的变体:
while ! command_to_run; do
echo "failed, retrying"
sleep 1
done
Run Code Online (Sandbox Code Playgroud)
while实际上是接受一个命令,所以它可以command_to_run直接测试成功/失败,而不必处理$?. 通常,while只要命令成功就运行循环;在这种情况下,我使用!否定它并运行循环,只要命令失败(即直到它成功)。
| 归档时间: |
|
| 查看次数: |
3233 次 |
| 最近记录: |