Bash: run command2 if command1 fails
These should do what you need:
cmd1 && cmd2 && echo success || echo epic fail
or
if cmd1 && cmd2; then
echo success
else
echo epic fail
fi
The pseudo-code in the question does not correspond to the title of the question.
If anybody needs to actually know how to run command 2 if command 1 fails, this is a simple explanation:
cmd1 || cmd2
: This will runcmd1
, and in case of failure it will runcmd2
cmd1 && cmd2
: This will runcmd1
, and in case of success it will runcmd2
cmd1 ; cmd2
: This will runcmd1
, and then it will runcmd2
, independent of the failure or success of runningcmd1
.
Petr Uzel is spot on but you can also play with the magic $?.
$? holds the exit code from the last command executed, and if you use this you can write your scripts quite flexible.
This questions touches this topic a little bit, Best practice to use $? in bash? .
cmd1
if [ "$?" -eq "0" ]
then
echo "ok"
else
echo "Fail"
fi
Then you also can react to different exit codes and do different things if you like.