Bash
如果失敗則嵌套 Bash
我正在嘗試做一個迭代 10 次以重試 2 個連續命令的 while 循環;
基本上;
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 次。如果任一命令在任何時候都成功,則中斷
您不需要嵌套 ifs,
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 }