« Programmation Bash/Tests » : différence entre les versions

Un livre de Wikilivres.
Contenu supprimé Contenu ajouté
Shadopok (discussion | contributions)
Shadopok (discussion | contributions)
Ligne 35 : Ligne 35 :


Les opérateurs de tests disponibles sont, pour les chaînes :
Les opérateurs de tests disponibles sont, pour les chaînes :
* <code>c1 = c2</code>, vrai si c1 et c2 sont égaux,
* <code>[ c1 = c2 ]</code>, vrai si c1 et c2 sont égaux,
* <code>c1 != c2</code>, vrai si c1 et c2 sont différents,
* <code>[ c1 != c2 ]</code>, vrai si c1 et c2 sont différents,
* <code>-z c</code>, vrai si c est la chaîne vide,
* <code>[ -z c ]</code>, vrai si c est la chaîne vide,
* <code>-n c</code>, vrai si c n'est pas la chaîne vide.
* <code>[ -n c ]</code>, vrai si c n'est pas la chaîne vide.


== Tests sur les nombres ==
== Tests sur les nombres ==

Version du 5 mars 2007 à 14:35

Cette page est considérée comme une ébauche à compléter . Si vous possédez quelques connaissances sur le sujet, vous pouvez les partager en éditant dès à présent cette page (en cliquant sur le lien « modifier »).

Ressources suggérées : Aucune (vous pouvez indiquer les ressources que vous suggérez qui pourraient aider d'autres personnes à compléter cette page dans le paramètre « ressources » du modèle? engendrant ce cadre)

Syntaxe du test

Deux syntaxes équivalentes permettent de tester des expressions :

[ expression ]

ou

test expression


Ces deux commandes renvoient un code de retour valant 0 si l'expression est vraie et 1 si l'expression est fausse. Exemple :

$ [ 2 = 2 ]
$ echo $?
0
$ [ 2 = 3 ]
$ echo $?
1

La commande test fonctionne de manière complétement équivalente :

$ test 2 = 2
$ echo $?
0
$ test 2 = 3
$ echo $?
1

Tests sur les chaînes de caractères

Les opérateurs de tests disponibles sont, pour les chaînes :

  • [ c1 = c2 ], vrai si c1 et c2 sont égaux,
  • [ c1 != c2 ], vrai si c1 et c2 sont différents,
  • [ -z c ], vrai si c est la chaîne vide,
  • [ -n c ], vrai si c n'est pas la chaîne vide.

Tests sur les nombres

Pour les nombres :

  • n1 -eq n2, vrai si n1 et n2 sont égaux ;
  • n1 -ne n2, vrai si n1 et n2 sont différents ;
  • n1 -lt n2, vrai si n1 est strictement inférieur à n2 ;
  • n1 -le n2, vrai si n1 est inférieur ou égal à n2 ;
  • n1 -gt n2, vrai si n1 est strictement supérieur à n2 ;
  • n1 -ge n2, vrai si n1 est supérieur ou égal à n2.

Tests et logique

Pour les expressions :

  • ! e, vrai si e est faux ;
  • e1 -a e2, vrai si e1 et e2 sont vrais ;
  • e1 -o e2, vrai si e1 ou e2 est vrai.

Test if

L'instruction if permet d'effectuer des opérations si une condition est réalisée.

if condition
    then instruction(s)
fi

L'instruction if peut aussi inclure une instruction else permettant d'exécuter des instructions dans le cas ou la condition n'est pas réalisée.

if condition
    then instruction(s)
else instruction(s)
fi

Il est bien sur possible d'immbriquer des if dans d'autres if et notamment des constructions telles que celle ci sont assez courantes :

if condition1
    then instruction(s)
else
    if condition2
        then instruction(s)
    else
        if condition3
            ...
        fi
    fi
fi

Pour permettre d'alléger ce type de code, ksh fournit un raccourci d'écriture : elif. Le code précédent pourrait être réécrit ainsi :

if condition1
    then instruction(s)
elif condition2
    then instruction(s)
elif condition3
    ...
fi


Test case

L'instruction case permet de comparer une valeur avec une liste d'autres valeurs et d'exécuter un bloc d'instructions lorsque une des valeurs de la liste correpsond.

case valeur_testee in
valeur1) instruction(s);;
valeur2) instruction(s);;
valeur3) instruction(s);;
...
esac

Ce code est équivalent à :

if [ valeur_teste = valeur1 ]
    then instruction(s)
elif [ valeur_testee = valeur2 ]
    then instruction(s)
elif [ valeur_testee = valeur3 ]
    then instruction(s)
...
fi

Texte gras