我正在尝试执行一个 while 循环,迭代 10 次以重试 2 个连续命令;
基本上;
retries=10
while ((retries > 0)); do
if ! command; then
if ! other_command; then
echo "Failed to start service - retrying ${retries}"
else
echo "Started service successfully"
break
fi
fi
((retries --))
if ((retries == 0 )); then
echo "service failed to start!"
fi
done
但我似乎无法正确嵌套它以获得所需的结果,即:尝试一个命令,如果失败,请尝试第二个命令。依次尝试这 2 个命令 10 次。如果任一命令在任何时候成功,则中断
答案1
您不需要嵌套 if,break
有助于避免它。基本上就是按照你描述的来的。
#! /bin/bash
retries=10
while ((retries)) ; do
if command1 ; then
break
elif command2 ; then
break
fi
((--retries))
done
if ((!retries)) ; then
echo 'Service failed to start!' >&2
fi
使用定义为的两个命令进行测试
command1 () {
r=$((RANDOM%10))
if ((r)) ; then
return 1
else
return 0
fi
}