我的腳本需要運行aws cli命令直到獲得success狀態。下面的腳本不起作用并引發語法錯誤。我的目標還在于讓它重試 CLI 呼叫,直到它successful達到(例如)5 次退休:
[0: command not found
非常感謝@Ярослав Рахматуллин!!
retry_times=5
counter=0
ri_status=`aws dms describe-connections --filter Name=replication-instance-arn,Values=$ri_arn --query=Connections[0].Status --region us-east-1`
#test $ri_status = '"successful"'
#echo $?
#until test $ri_status = '"successful"'
until [[ $ri_status =~ successful ]]
do
ri_status=`aws dms describe-connections --filter Name=replication-instance-arn,Values=$ri_arn --query=Connections[0].Status --region us-east-1`
[[ counter -eq $retry_times ]] && echo "Failed!" && exit 1
echo "Trying again. Try #$counter"
((counter ))
sleep 5
done
uj5u.com熱心網友回復:
嘗試這個:
until [ $? -eq 0 ]
do
# foobar...
sleep 5
done
注意空格。[ 和 ] 是單獨的命令,它們周圍需要空格才能與其他命令區分開來。0]對 bash 來說很混亂,所以是[0“[” “0”。
只需直接測驗您想要的條件,而不是查看上一個命令的退出值。
until test $ri_status = '"successful"'
do
ri_status=`aws dms describe-connections --filter Name=replication-instance-arn,Values=$ri_arn --query=Connections[0].Status --region us-east-1`
sleep 5
done
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/347832.html
