Différence entre les crochets simples et doubles dans Bash
-
Crochets simples
[ ]
dans Bash -
Crochets doubles
[[ ]]
dans Bash - Différences 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.