Chcę zrobić coś takiego:
if cmd1 && cmd2
echo success
else
echo epic fail
fi
Jak mam to zrobić?
bash
shell-script
exit-status
michelemarcon
źródło
źródło
Odpowiedzi:
Powinny zrobić to, czego potrzebujesz:
lub
źródło
||
nie patrzy na wynik pierwszegoecho
polecenia.Just try whoami && whoami && echo success || echo epic fail
i terazwhoami && 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? .
Następnie możesz reagować na różne kody wyjścia i robić różne rzeczy, jeśli chcesz.
źródło
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 uruchomicmd2
, niezależnie od awarii lub powodzenia działaniacmd1
.źródło