web-dev-qa-db-fra.com

Comment écrire si sinon sur une ligne en shell?

J'aimerais écrire en une ligne ceci:

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

Donc, pour faire un test dans mon Shell, j'ai fait:

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

Le résultat est

-bash: [2: command not found
OK

Donc ça ne marche pas.

7
user6066403

Space - la dernière frontière. Cela marche:

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

Notez les espaces après [ et avant ] - [ est un nom de commande! Et j'ai enlevé un $ supplémentaire à la fin de $SERVICESTATEID.

Une alternative consiste à épeler test. Alors vous n’avez pas besoin du ] final, ce que je préfère:

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

Écrivez comme ceci, de l'espace est requis avant et après [ et ] dans le shell

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