2016-06-08 30 views
4

我想在一個行寫:如何在shell中的一行中寫入if else?

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

所以,做一個測試,我的殼我所做的:

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

結果是

-bash: [2: command not found 
OK 

所以它不沒有工作。

+0

記住的是需要空間,即' ['是程序的名稱。並且在程序的名字必須是空格之後。這與'ls * .txt'中的相同。這個'ls * .txt'也會失敗。 – ceving

+0

好吧thx現在的作品! – user6066403

回答

5

空間 - 最後的邊界。這工作:

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 
+0

謝謝你的解釋。這是現在的作品。 – user6066403

1

這樣寫,前後殼[]

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