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。