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

时间:2016-06-08 08:40:32

标签: shell unix if-statement

我想写一行:

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

所以在我的shell中进行测试我做了:

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

结果是

-bash: [2: command not found
OK

所以它不起作用。

3 个答案:

答案 0 :(得分:10)

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

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

[之后和]之前注意空格 - [是命令名称!我在$的末尾删除了额外的$SERVICESTATEID

另一种方法是拼出test。然后你不需要最后的],这是我更喜欢的:

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

答案 1 :(得分:1)

这样写,在[]之前和之后需要空格

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

答案 2 :(得分:0)

更短的格式。

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