How to write if else in one line in shell? How to write if else in one line in shell? unix unix

How to write if else in one line in shell?


Space -- the final frontier. This works:

if [ $SERVICESTATEID -eq 2 ]; then echo "CRITICAL"; else echo "OK"; fi

Note spaces after [ and before ] -- [ is a command name! And I removed an extra $ at the end of $SERVICESTATEID.

An alternative is to spell out test. Then you don't need the final ], which is what I prefer:

if test $SERVICESTATEID -eq 2; then echo "CRITICAL"; else echo "OK"; fi


Write like this, space is required before and after [ and ] in shell

if [ 2 -eq 3 ]; then echo "CRITICAL"; else echo "OK"; fi


Shorter format.

( [ 2 -eq 3 ] && echo "CRITICAL" ) || echo "OK"