2011-03-17 5 views
7

Comment comparer un script shell?Comment comparer un script shell?

Ou, pourquoi le script suivant n'imprime rien?

x=1 
if[ $x = 1 ] then echo "ok" else echo "no" fi 
+0

première ligne: ** $ x = 1 ** – Hossein

+5

dont vous avez besoin une ; après] et un espace après si: 'if [$ x = 1]; puis écho "ok"; d'autre écho "non"; – Sergio

+0

@Sergio il donne 'bash: erreur de syntaxe près de jeton inattendu \ 'alors'' –

Répondre

8

Avec des chiffres, utilisez -eq, -ne, ... pour égale, différent, ...

x=1 
if [ $x -eq 1 ] 
then 
    echo "ok" 
else 
    echo "no" 
fi 

Et pour les autres, utilisez == pas =.

+0

En utilisant -eq et le; après] ça donne 'bash: erreur de syntaxe près du jeton inattendu \ 'alors'' –

+0

Par changin juste mon' == 'à' -eq' il n'imprime toujours rien ici .. –

+0

Oui, en fait vous devez laisser un "espace" "avant et après chaque" ["... Je viens d'éditer un code valide. –

1

Cela dépend de la langue. Avec bash, vous pouvez utiliser l'opérateur ==. Otherwize vous pouvez utiliser -eq-lt-gt pour égal, lowererthan, greaterthan.

$ x=1 
$ if [ "$x" == "2" ]; then echo "yes"; else echo "no"; fi 
no 

Modifier: espaces ajoutés ARROUND == et testés avec 2.

+1

Vous avez besoin d'espaces autour du "==" - essayez votre commande avec '[" $ x "==" 2 "]' et vous verrez que c'est vrai aussi. Vous avez besoin de '[" $ x "=" 1 "]' ou '[$ x -eq 1]', ou avec bash '[[$ x == 1]]' ou '((x == 1))' –

+0

merci pour cette correction, problème de retrait manuel .. Mais [] fonctionne aussi. – Aif

4

solution court avec raccourci AND et OR:

x=1 
(($x == 1)) && echo "ok" || echo "no" 
Questions connexes