La commande test peut être utilisée sur la ligne de commande Linux pour comparer un élément à un autre, mais elle est plus couramment utilisée dans les scripts de shell BASH dans le cadre d'instructions conditionnelles contrôlant la logique et le déroulement du programme.
Un exemple basique
Vous pouvez essayer ces commandes simplement en ouvrant une fenêtre de terminal.
test 1 -eq 2 && echo "yes" || echo "non"
La commande ci-dessus peut être décomposée comme suit: En substance, la commande compare 1 à 2 et s’ils correspondent, l’instruction echo "yes" qui est associée à "yes" et s’ils ne correspondent pas, l’instruction echo "no" qui est associée à "no". Si vous comparez des éléments qui analysent sous forme de nombres, vous pouvez utiliser les opérateurs de comparaison suivants: Exemples test 1 -eq 2 && echo "yes" || echo "non"
(affiche "non" à l'écran car 1 n'est pas égal à 2) test 1 -ge 2 && echo "yes" || echo "non"
(affiche "non" à l'écran car 1 n'est pas supérieur ou égal à 2) test 1 -gt 2 && echo "yes" || echo "non"
(affiche "non" à l'écran car 1 n'est pas supérieur à 2) test 1 -le 2 && echo "yes" || echo "non"
(affiche "oui" à l'écran car 1 est inférieur ou égal à 2) test 1 -lt 2 && echo "yes" || echo "non"
(affiche "oui" à l'écran car 1 est inférieur ou égal à 2) test 1 -ne 2 && echo "yes" || echo "non"
(affiche "oui" à l'écran car 1 n'est pas égal à 2) Si vous comparez des éléments qui analysent sous forme de chaînes, vous pouvez utiliser les opérateurs de comparaison suivants: Exemples test "string1" = "string2" && echo "yes" || echo "non"
(affiche "non" à l'écran car "chaîne1" n'est pas égal à "chaîne2") test "string1"! = "string2" && echo "yes" || echo "non"
(affiche "oui" à l'écran car "chaîne1" n'est pas égal à "chaîne2") test -n "chaîne1" & echo "oui" || echo "non"
(affiche "oui" à l'écran car "chaîne1" a une longueur de chaîne supérieure à zéro) test -z "chaîne1" & echo "oui" || echo "non"
(affiche "non" à l'écran car "chaîne1" a une longueur de chaîne supérieure à zéro) Si vous comparez des fichiers, vous pouvez utiliser les opérateurs de comparaison suivants: Exemples test / chemin / vers / fichier1 -nt / chemin / vers / fichier2 && echo "oui"
(Si fichier1 est plus récent que fichier2, le mot "oui" sera affiché) test -e / chemin / vers / fichier1 && echo "oui"
(si le fichier 1 existe, le mot "oui" sera affiché) test -O / chemin / vers / fichier1 && echo "oui"
(si vous possédez file1, le mot "oui" est affiché ") Terminologie Jusqu'ici, tout a été comparant une chose à une autre, mais si vous voulez comparer deux conditions? Par exemple, si un animal a 4 pattes et va "moo", c'est probablement une vache. Le simple fait de vérifier 4 pattes ne garantit pas que vous avez une vache, mais vérifier le son qu’elle fait fait certainement. Pour tester les deux conditions à la fois, utilisez l’énoncé suivant: test 4 -eq 4 -a "moo" = "moo" && echo "c'est une vache" || echo "ce n'est pas une vache"
La partie clé ici est le -a qui représente et . Il existe une méthode plus efficace et plus couramment utilisée pour effectuer le même test, à savoir: test 4 -eq 4 && test "moo" = "moo" && echo "c'est une vache" || echo "ce n'est pas une vache"
Vous pouvez également effectuer un autre test en comparant deux instructions. Si l'une des deux est vraie, affichez une chaîne. Par exemple, si vous souhaitez vérifier qu'un fichier nommé "fichier1.txt" existe ou qu'un fichier nommé "fichier1.doc" existe, vous pouvez utiliser la commande suivante: test -e fichier1.txt -o -e fichier1.doc && echo "fichier1 existe" || echo "fichier1 n'existe pas"
La partie clé ici est le -o qui signifie ou . Il existe une méthode plus efficace et plus couramment utilisée pour effectuer le même test, à savoir: test -e fichier1.txt || test -e fichier1.doc && echo "fichier1 existe" || echo "fichier1 n'existe pas" Vous n'avez pas réellement besoin d'utiliser le mot test pour effectuer la comparaison. Tout ce que vous avez à faire est de placer la déclaration entre crochets comme suit: -e fichier1.txt && echo "fichier1 existe" || echo "fichier1 n'existe pas"
Le et signifie fondamentalement la même chose que le test. Maintenant que vous savez ceci, vous pouvez améliorer la comparaison de plusieurs conditions comme suit: 4 -eq 4 && "moo" = "moo" && echo "c'est une vache" || echo "ce n'est pas une vache"-e fichier1.txt || -e fichier1.doc && echo "fichier1 existe" || echo "fichier1 n'existe pas" La commande test est plus utile dans les scripts car vous pouvez tester la valeur d'une variable par rapport à une autre et contrôler le flux de programmes. Sur la ligne de commande standard, vous pouvez l'utiliser pour vérifier si un fichier existe ou non.
Comparer des nombres
Comparer du texte
Comparer des fichiers
Comparer plusieurs conditions
Élimination du mot clé de test
Résumé