set -o errexitHata durumunda tüm komut dosyası hata noktasında çıktığı kullanan bir bash komut dosyası var .
Komut dosyası, curlbazen istenen dosyayı alamayan bir komut çalıştırır - ancak bu durumda komut dosyası çıkışta hata vermez.
İçin bir fordöngü ekledim
- birkaç saniye duraklatın, ardından
curlkomutu yeniden deneyin falsevarsayılan sıfır dışında bir çıkış durumu tanımlamak için for döngüsünün altında kullanın - curl komutu başarılı olursa döngü sona erer ve son komutun çıkış durumu sıfır olmalıdır.
#! /bin/bash
set -o errexit
# ...
for (( i=1; i<5; i++ ))
do
echo "attempt number: "$i
curl -LSso ~/.vim/autoload/pathogen.vim https://tpo.pe/pathogen.vim
if [ -f ~/.vim/autoload/pathogen.vim ]
then
echo "file has been retrieved by curl, so breaking now..."
break;
fi
echo "curl'ed file doesn't yet exist, so now will wait 5 seconds and retry"
sleep 5
# exit with non-zero status so main script will errexit
false
done
# rest of script .....
Sorun, curlkomut başarısız olduğunda, döngü komutu beş kez yeniden dener - tüm denemeler başarısız olursa for döngüsü sona erer ve ana komut dosyası devam eder errexit.
Bu curlifade başarısız olursa komut dosyasının tamamını nasıl kapatabilirim ?
trueBreak ifadesinin önüne koymak ve döngünün çıkış değerini sağlamak iyi bir fikir olabilir mi?