我正在编写一个简单的bash脚本来“卷曲”一些值。有时代码有效,有时会失败,并说“来自服务器的空回复”。 如何在bash中设置对此进行检查,以便在卷曲失败后再次尝试直到获得值为止?
答案 0 :(得分:3)
while ! curl ... # add your specific curl statement here
do
{ echo "Exit status of curl: $?"
echo "Retrying ..."
} 1>&2
# you may add a "sleep 10" or similar here to retry only after ten seconds
done
如果您想在变量中输出该卷曲,请随意捕获它:
output=$(
while ! curl ... # add your specific curl statement here
do
{ echo "Exit status of curl: $?"
echo "Retrying ..."
} 1>&2
# you may add a "sleep 10" or similar here to retry only after ten seconds
done
)
有关重试的消息会打印到stderr,因此它们不会弄乱卷曲输出。
答案 1 :(得分:2)
人们过于复杂:
until contents=$(curl "$url")
do
sleep 10
done
答案 2 :(得分:1)
对于我来说,有时会发生卷曲超时并且没有相关信息。尝试curl with --connect-timeout 600(以秒为单位),如:
curl --connect-timeout 600 "https://api.morph.io/some_stuff/data.json"
也许这有助于你。
答案 3 :(得分:0)
如果您想尝试该命令直到成功,您可以说:
command_to_execute; until (( $? == 0 )); do command_to_execute; done