一个计算机技术爱好者与学习者

0%

好好学Shell:失败重试

1. 为什么需要重试?

典型场景:程序的实现需要调用第三方的API,但是我们并不能保证第三方API一直好用,也不能保证网络一直畅通,所以在调用第三方API时需要加上错误重试。

通用场景:程序的运行不符合预期,我们知道再次调用大概率可以使之符合预期,这时就需要重试。

本文中,我们学习一下Shell脚本中的失败重试。

2. 代码示例

本节来自ChatGPT。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#!/bin/bash

# 最大重试次数
MAX_RETRY=5

# 当前重试次数
retry_count=0

# 循环执行命令,如果失败则重试
while true; do
# 执行命令,可以将具体的命令替换为你需要执行的命令
command_result=$(some_command)

# 检查命令的返回值,如果成功则退出循环
if [ $? -eq 0 ]; then
echo "Command succeeded!"
break
fi

# 命令执行失败,检查是否已达到最大重试次数
if [ $retry_count -ge $MAX_RETRY ]; then
echo "Command failed after $MAX_RETRY attempts."
exit 1
fi

# 命令执行失败,增加重试次数,等待一段时间后再次执行命令
echo "Command failed, retrying in 10 seconds..."
retry_count=$((retry_count+1))
sleep 10
done

在上面的脚本中,MAX_RETRY定义了最大重试次数,retry_count用于记录当前重试次数,while循环用于不断执行命令,if语句用于检查命令的返回值,如果成功则退出循环,否则增加重试次数,并等待一段时间后再次执行命令,直到命令成功或达到最大重试次数。如果命令在最大重试次数内执行失败,则脚本退出并返回错误码1。

  • 本文作者: 好好学习的郝
  • 原文链接: https://www.voidking.com/dev-shell-retry/
  • 版权声明: 本文采用 BY-NC-SA 许可协议,转载请注明出处!源站会即时更新知识点并修正错误,欢迎访问~
  • 微信公众号同步更新,欢迎关注~