如何创建 Bash 脚本来执行命令,直到最大尝试次数成功

如何创建 Bash 脚本来执行命令,直到最大尝试次数成功

我正在尝试执行一个 bash 脚本,该脚本尝试连接到 VP,最多可重试 3 次。我是 bash 脚本的新手,所以可能有几个错误,我的代码如下:

current_server=$(nordvpn status | grep 'Current server:' | cut -c 17-| cut -d'.' -f1)
recommended_server=$(curl --silent 'https://nordvpn.com/wp-admin/admin-ajax.php?action=servers_recommendations' | jq --raw-output '.[].hostname' | head -n 1| cut -d'.' -f1)
command = 'nordvpn c $recommended_server | grep "You are connected"'

if [[ $current_server == $recommended_server ]]; then
   echo "Uguali"
   echo "   Current: $current_server"
   echo "   Recommended: $recommended_server"
else
   echo "Diversi: "
   echo "   Current: $current_server"
   echo "   Recommended: $recommended_server"
   nordvpn d
   counter=0
   max_retry=3
   until $($command)
   do
      sleep 1
      [[ counter -eq $max_retry ]] && echo "Failed!" && exit 1
      echo "Retrying. Try #$counter"
      ((counter++))
   done
fi

提前谢谢!

答案1

使用until $command

直到Test_COMMANDS;执行 Block_Of_COMMANDS;完成

执行untilBlock_Of_COMMANDS直到Test_COMMANDS 没有成功。
而且,它每次都会扩展并执行 Test_COMMANDS。

问题在于,您写的$($command)是一个正确的命令bash
即使可能不是您想要的那个命令:

  • until $($command)执行$command然后尝试执行其输出并将其放入用于测试的变量中until
  • until $command执行并使用循环的 as 测试$command中最后一个命令的退出代码。$command
  • until ($command)执行与上述情况相同的操作,但$command在子shell中执行(获取在里面执行的最终命令的退出代码)...结果相同。

help until

直到:直到命令;执行命令;完成
只要测试不成功就执行命令。

扩展并执行命令,只要最终命令
“直到”命令中退出状态不为零。

好吧,不太清楚。最好这样

直到:直到 Test_COMMANDS;执行 Block_Of_COMMANDS;完成

相关内容