Différence entre les crochets simples et doubles dans Bash

Fumbani Banda 30 janvier 2023
  1. Crochets simples [ ] dans Bash
  2. Crochets doubles [[ ]] dans Bash
  3. Différences entre les crochets simples et doubles dans Bash
Différence entre les crochets simples et doubles dans Bash

Ce didacticiel explique ce que sont les crochets simples et les crochets doubles dans Bash et leurs différences.

Crochets simples [ ] dans Bash

Un simple crochet [ est un autre nom pour la commande test dans le shell Bash. La commande test est un utilitaire standard dans tous les shells POSIX. Le ] est le dernier argument de [.

Les deux scripts ci-dessous montrent que [ et la commande test sont similaires. Le premier script utilise les crochets simples pour vérifier si la valeur de la variable $y est supérieure à la valeur de la variable $x et imprime la sortie en fonction des résultats renvoyés par l’évaluation dans la commande test.

Dans notre cas, la valeur de la variable $y est supérieure à la valeur de la variable $x.

#!/bin/bash

x=2
y=3

if [ $y -gt $x ]
then
    echo "$y is greater than $x"
else
    echo "$x is greater than $y"
fi

Le script imprime le message suivant sur la sortie standard lorsqu’il est exécuté.

3 is greater than 2

Ce script utilise la commande test au lieu des crochets simples. Le script vérifie si la valeur de la variable $y est supérieure à la valeur de la variable $x.

Si le test renvoie vrai, le script exécute la première commande echo, et si le test renvoie faux, il exécute la commande echo dans la section else.

Dans notre cas, la variable $y a une valeur supérieure de 3 à la variable $x, 2. Le script exécutera la première commande echo.

#!/bin/bash

x=2
y=3

if test $y -gt $x
then
    echo "$y is greater than $x"
else
    echo "$x is greater than $y"
fi

Le script imprime la sortie suivante sur la sortie standard.

3 is greater than 2

Crochets doubles [[ ]] dans Bash

Les doubles crochets [[]] prolongent la commande test adoptée à partir de ksh88 ; c’est plus polyvalent. Les crochets doubles peuvent être utilisés pour la correspondance de modèles, l’expansion des paramètres et ils ne permettent pas le fractionnement des mots.

L’utilisation de doubles crochets permet d’éviter les erreurs de logique dans les scripts Bash. Dans les doubles crochets, les opérateurs &&, ||, < et > fonctionnent en donnant des erreurs dans la commande test.

Nous utilisons des doubles crochets dans le script ci-dessous pour l’évaluation arithmétique. Les doubles crochets testent si la valeur de la variable $x est égale à la valeur de la variable $y.

Le test retourne true et exécute la première commande echo du script.

#!/bin/bash

x=10
y=10

if [[ $x -eq $y ]]
then
    echo "\$x is equal to \$y"
else
    echo "\$x is not equal to \$y"
fi

L’exécution du script produit la sortie suivante sur le terminal standard.

$x is equal to $y

Différences entre les crochets simples et doubles dans Bash

La commande test est un utilitaire Bash intégré aux shells POSIX standard, tandis que les doubles crochets ne sont pas une commande. Le double crochet est une extension dans Bash adaptée de ksh88 utilisé comme mot-clé.

Les doubles crochets prennent en charge plus de fonctionnalités par rapport à la commande test. Contrairement à la commande test, elle prend en charge la correspondance de modèles et l’expansion des paramètres et ne permet pas le fractionnement de mots.

Fumbani Banda avatar Fumbani Banda avatar

Fumbani is a tech enthusiast. He enjoys writing on Linux and Python as well as contributing to open-source projects.

LinkedIn GitHub