如何在shell中的一行中写if else?

use*_*403 7 unix shell if-statement

我想写一行:

if [$SERVICESTATEID$ -eq 2]; then echo "CRITICAL"; else echo "OK"; fi
Run Code Online (Sandbox Code Playgroud)

所以在我的shell中做一个测试我做了:

if [2 -eq 3]; then echo "CRITICAL"; else echo "OK"; fi
Run Code Online (Sandbox Code Playgroud)

结果是

-bash: [2: command not found
OK
Run Code Online (Sandbox Code Playgroud)

所以它不起作用.

Jen*_*ens 11

太空 - 最后的边疆.这有效:

if [ $SERVICESTATEID -eq 2 ]; then echo "CRITICAL"; else echo "OK"; fi
Run Code Online (Sandbox Code Playgroud)

之后[和之前的注释空间]- [是命令名称!我$在结束时删除了一个额外的$SERVICESTATEID.

另一种方法是拼写出来test.然后你不需要决赛],这是我更喜欢的:

if test $SERVICESTATEID -eq 2; then echo "CRITICAL"; else echo "OK"; fi
Run Code Online (Sandbox Code Playgroud)