Jak mogę sprawdzić, czy git clone
wystąpił błąd w skrypcie bash?Jak wykryć, czy klon git zawiodły w skrypcie bash
git clone [email protected]:my-username/my-repo.git
Jeśli wystąpił błąd, chcę po prostu exit 1
;
Jak mogę sprawdzić, czy git clone
wystąpił błąd w skrypcie bash?Jak wykryć, czy klon git zawiodły w skrypcie bash
git clone [email protected]:my-username/my-repo.git
Jeśli wystąpił błąd, chcę po prostu exit 1
;
Oto kilka typowych formularzy. Wybór, który najlepiej wybrać, zależy od tego, co robisz. Możesz użyć dowolnego podzestawu lub ich kombinacji w jednym skrypcie, bez złego stylu.
if ! failingcommand
then
echo >&2 message
exit 1
fi
failingcommand
ret=$?
if ! test "$ret" -eq 0
then
echo >&2 "command failed with exit status $ret"
exit 1
fi
failingcommand || exit "$?"
failingcommand || { echo >&2 "failed with $?"; exit 1; }
Można zrobić coś takiego:
git clone [email protected]:my-username/my-repo.git || exit 1
Albo exec go:
exec git clone [email protected]:my-username/my-repo.git
Ten ostatni pozwoli proces powłoki zostać przejęte przez operację klonu, a jeśli to się nie powiedzie, powrót błąd. Możesz dowiedzieć się więcej o exec here.
Prawie pracy, ale w jaki sposób mogę dodać "komunikat o błędzie tutaj" echo następnie uruchom 'exit 1 '? Próbowałem: '|| echo "ERROR message here" && exit 1' ale zawsze wychodzi, nawet po pomyślnym zakończeniu. Dzięki. – Justin
Potrzebujesz 'failingcommand || {echo message && exit 1; } 'ponieważ' && 'nie wiąże się silniej niż' || '. A następnie lepiej użyj 'failingcommand || {echo wiadomość; wyjście 1; } ' –
Metoda 1:
git clone [email protected]:my-username/my-repo.git || exit 1
Metoda 2:
if ! (git clone [email protected]:my-username/my-repo.git) then
exit 1
# Put Failure actions here...
else
echo "Success"
# Put Success actions here...
fi
Możesz rozważyć dołączenie> i 2 do polecenia echo, aby wysłać je do stderr zamiast standardowe wyjście. W przeciwnym razie doskonała odpowiedź. +1 – Nemo
Podczas wywoływania 'exit',' exit' bez argumentów jest takie samo jak 'exit $?'. – jordanm
@jordanm - Z wyjątkiem tych przykładów, $? zostanie zmodyfikowane przez wywołanie samego "echo". Tak więc proste 'wyjście' zakończy się stanem zero. – Nemo