我正在尝试执行一个 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;完成
执行until
Block_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;完成