Différence entre if [ ] et if [[ ]]

Tout ce qui concerne la programmation.
Répondre
tony
Membre actif
Membre actif
Messages : 540
Inscription : 10 juil. 2023, 00:54
Status : Hors-ligne

salut,
le cours d'IUT que j'utilise pour apprendre les bases utiles pour écrire un script ne mentionne pas la commande composée if [ ] mais seulement if [[ ]]. Sont-elles identiques par leurs effets ou y a-t-il une différence?
Cours d'IUT:
La commande interne composée [[ est souvent utilisée avec la commande interne composée
if. Elle permet l’évaluation d’expressions conditionnelles portant sur des objets aussi différents
que les permissions sur une entrée, la valeur d’une chaîne de caractères ou encore l’état d’une
option de la commande interne set.
Syntaxe :
[[ expr_cond ]]
j'ai testé les 2 possibilités dans ce script

Code : Tout sélectionner

#!/bin/bash

if [[ $(whoami) = 'root' ]]; then
	echo "You are root"
else
echo "you are not"
fi
la réponse est la même. Par contre

Code : Tout sélectionner

~$ a="au revoir" 
[ $a == 123 ] 
echo $?
bash: [: too many arguments
2
~$  a="au revoir" 
[[ $a == 123 ]] 
echo $?
1

~$  a="au revoir" 
[[ $a == "au revoir" ]] 
echo $?
0
Debian Trixie/ Xfce
Avatar de l’utilisateur
diesel
Membre
Membre
Messages : 369
Inscription : 29 oct. 2022, 22:43
Status : Hors-ligne

Tout est dans le man de bash.

Le [...] est un "alias" de la commande test (if [ $a = $b ] est équivalent à if test $a = $b).

Amicalement.

Jean-Marie
Répondre