Chcę zrobić coś takiego:
if cmd1 && cmd2
echo success
else
echo epic fail
fi
Jak mam to zrobić?
Chcę zrobić coś takiego:
if cmd1 && cmd2
echo success
else
echo epic fail
fi
Jak mam to zrobić?
Odpowiedzi:
Powinny zrobić to, czego potrzebujesz:
cmd1 && cmd2 && echo success || echo epic fail
lub
if cmd1 && cmd2; then
echo success
else
echo epic fail
fi
||
nie patrzy na wynik pierwszego echo
polecenia.
Just try whoami && whoami && echo success || echo epic fail
i teraz whoami && whoareyou && echo success || echo epic fail
. Nie mogę zrozumieć, co masz na myśli mówiąc „nie patrzy na wynik pierwszego polecenia echa”
cmd1 && cmd2
Petr Uzel jest na miejscu, ale możesz także grać z magicznym $ ?.
$? przechowuje kod wyjścia z ostatniego wykonanego polecenia, a jeśli go użyjesz, możesz pisać skrypty dość elastycznie.
To pytanie dotyczy nieco tego tematu. Najlepsza praktyka używania $? w bash? .
cmd1
if [ "$?" -eq "0" ]
then
echo "ok"
else
echo "Fail"
fi
Następnie możesz reagować na różne kody wyjścia i robić różne rzeczy, jeśli chcesz.
Pseudokod w pytaniu nie odpowiada tytułowi pytania.
Jeśli ktoś musi wiedzieć, jak uruchomić polecenie 2, jeśli polecenie 1 nie powiedzie się, to proste wyjaśnienie:
cmd1 || cmd2
: Uruchomi się cmd1
, aw przypadku awarii uruchomi sięcmd2
cmd1 && cmd2
: Uruchomi się cmd1
, a w przypadku sukcesu uruchomi sięcmd2
cmd1 ; cmd2
: Uruchomi się cmd1
, a następnie uruchomi cmd2
, niezależnie od awarii lub powodzenia działania cmd1
.