Artificial intelligent assistant

Bash using || operator for command error check - how to run two commands in error check? I have just realized that using `||` operator as a check to see if a command completed with successfully doesn't handle multiple commands after the `||`. Here is an exert from my script, I am waiting for a ping to come back and if it doesn't in a certain amount of time, then it should run two commands (in the real script, there are two functions, one to cleanup, and one to print the error and exit. I cant combine them). /bin/bash echo "start" timeout 10s bash -c 'until ping -w1 -c1 1.1.1.1 >/dev/null 2>&1; do :; done' || echo "unsuc"; exit 1 echo "suc" exit 0 My problem is that if the ping succeeds, then the script just `exit 1`. I also tried doing `echo "unsuc" && exit 1`, but that results in the same behavior. How do I run two commands if the ping command fails?

Use a group command (AKA "list") - e.g. ` ... || { echo "unsuc" ; exit 1 ; }`.

See `man bash` and search for the `Compound Commands` section.

Alternatively, use an `if` statement, for example:


#!/bin/bash
echo "start"
if ! timeout 10s bash -c 'until ping -w1 -c1 1.1.1.1 >/dev/null 2>&1; do :; done' ; then
echo "unsuc"
exit 1
fi
echo "suc"
exit 0

xcX3v84RxoQ-4GxG32940ukFUIEgYdPy f5351f6dd10626ad18024967e967378e