Chciałbym utworzyć pętlę, która powtarza transfer ncftp, jeśli zwraca błąd.
Nie jestem pewien, w jaki sposób można użyć zmiennej kodu wyjścia w pętli. Czy coś takiego mogłoby działać?
until [$? == 0]; do
ncftpput -DD -z -u user -p password remoteserver /remote/dir /local/file
done
Odpowiedzi:
Podstawę tej eleganckiej pętli znalazłem gdzie indziej na serwerze serverault. Okazuje się, że nie ma potrzeby zapisywania kodu wyjścia, ponieważ można przetestować bezpośrednio na samym poleceniu;
źródło
Prawie. Prawdopodobnie lepiej jest zapisać wartość zwracaną jako zmienną, aby można było ją wstępnie ustawić przed pętlą. W przeciwnym razie będzie to miało wpływ na polecenie ostatniego uruchomienia.
Możesz także zawiesić
sleep
tam, aby nie odradzał się zbyt szybko.źródło
Trochę hacky, ale moim rozwiązaniem było po prostu utworzenie funkcji bash, która uruchomi się sama, jeśli zakończy się niepowodzeniem
źródło
Możesz wykonać pętlę, gdy twoje polecenie zwróci błąd:
źródło