while ! curl my_url; do sleep 0.1; done
curl supostamente sai com um código de saída diferente de zero se houver um erro.
O importante é entender que, no shell, as condições da forma [ ... ]
não são uma construção de linguagem especial. [
é um comando e o resto até e incluindo o ]
são seus argumentos. Em vez do comando [
, você pode usar qualquer comando, porque cada comando tem um status de saída e a condição será avaliada como verdadeira se o status de saída for zero.