Ich möchte so etwas machen:
if cmd1 && cmd2
echo success
else
echo epic fail
fi
Wie soll ich das machen
Ich möchte so etwas machen:
if cmd1 && cmd2
echo success
else
echo epic fail
fi
Wie soll ich das machen
Antworten:
Diese sollten das tun, was Sie brauchen:
cmd1 && cmd2 && echo success || echo epic fail
oder
if cmd1 && cmd2; then
echo success
else
echo epic fail
fi
||
nicht auf die Ausgabe des ersten echo
Befehls schaue .
Just try whoami && whoami && echo success || echo epic fail
und jetzt whoami && whoareyou && echo success || echo epic fail
. Ich kann nicht herausfinden, was Sie mit "Nicht auf die Ausgabe des ersten
cmd1 && cmd2
Petr Uzel ist genau richtig, aber Sie können auch mit dem magischen Geld spielen.
$? Enthält den Exit-Code des zuletzt ausgeführten Befehls. Wenn Sie diesen verwenden, können Sie Ihre Skripte sehr flexibel schreiben.
Diese Frage berührt dieses Thema ein wenig, Best Practice zu verwenden $? in der Bash? .
cmd1
if [ "$?" -eq "0" ]
then
echo "ok"
else
echo "Fail"
fi
Dann können Sie auch auf verschiedene Exit-Codes reagieren und verschiedene Dinge tun, wenn Sie möchten.
Der Pseudocode in der Frage entspricht nicht dem Titel der Frage.
Wenn jemand tatsächlich wissen muss, wie Befehl 2 ausgeführt wird, wenn Befehl 1 fehlschlägt, ist dies eine einfache Erklärung:
cmd1 || cmd2
: Dies wird ausgeführt cmd1
, und im Falle eines Fehlers wird es ausgeführtcmd2
cmd1 && cmd2
: Dies wird ausgeführt cmd1
, und im Erfolgsfall wird es ausgeführtcmd2
cmd1 ; cmd2
: Dies wird ausgeführt cmd1
, und dann wird es ausgeführt cmd2
, unabhängig vom Fehlschlagen oder Erfolg der Ausführung cmd1
.