Commande test sous Linux
Encyclopédie des commandes Linux
testC'est une commande intégrée du système Linux/Unix utilisée pour l'évaluation conditionnelle, principalement utilisée pour divers tests et opérations de comparaison dans les scripts shell. Elle peut vérifier les attributs de fichiers, comparer des chaînes et des valeurs numériques, et est un outil indispensable pour écrire des scripts shell.
Syntaxe de base
test EXPRESSION # 或者使用方括号格式(更常用) [ EXPRESSION ]
Remarque: Lors de l'utilisation du format avec crochets, il doit y avoir des espaces entre l'expression et les crochets, c.-à-d.,
[空格EXPRESSION空格]
Catégories de fonctions principales
1. Test de fichiers
Vérifie divers attributs de fichiers ou de répertoires :
| Expression | Signification |
|---|---|
-e 文件 |
Si le fichier existe |
-f 文件 |
Est un fichier régulier (et non un répertoire ou un fichier de périphérique) |
-d 文件 |
Est un répertoire |
-s 文件 |
La taille du fichier n'est pas nulle |
-r 文件 |
Le fichier est lisible |
-w 文件 |
Le fichier est accessible en écriture |
-x 文件 |
Le fichier est exécutable |
-L 文件 |
Le fichier est un lien symbolique |
Exemple:
Exemples
echo "Ceci est un fichier régulier"
fi
2. Comparaison de chaînes
Compare la relation entre deux chaînes :
| Expression | Signification |
|---|---|
-z "字符串" |
La longueur de la chaîne est 0 |
-n "字符串" |
La longueur de la chaîne n'est pas 0 |
"串1" = "串2" |
Les chaînes sont égales |
"串1" != "串2" |
Les chaînes ne sont pas égales |
Exemple:
Exemples
if [ -z "$username" ]; then
echo "Le nom d'utilisateur ne peut pas être vide"
fi
3. Comparaison numérique
Compare la relation entre deux entiers :
| Expression | Signification |
|---|---|
n1 -eq n2 |
Equal |
n1 -ne n2 |
Différent de |
n1 -gt n2 |
Supérieur à |
n1 -ge n2 |
Supérieur ou égal à |
n1 -lt n2 |
Inférieur à |
n1 -le n2 |
Inférieur ou égal à |
Exemple:
Exemples
echo "Actuellement l'utilisateur root"
fi
4. Opérateurs logiques
Combine plusieurs conditions de test :
| Operator | Signification | Exemple |
|---|---|---|
! |
NON logique | [ ! -f file ] |
-a |
ET logique | [ -f file -a -r file ] |
-o |
OU logique | [ -d dir -o -f file ] |
Syntaxe moderne recommandée(en utilisant&&et||):
Exemples
[ -d dir ] || [ -f file ] # Est un répertoire ou un fichier
Utilisation avancée
1. Évaluation d'une condition composée
Exemples
echo "Le fichier existe et est lisible"
fi
2. Combinaison avec les instructions if
Exemples
echo "Démarrage du service..."
elif [ "$1" = "stop" ]; then
echo "Arrêt du service..."
else
echo "Paramètre non valide"
fi
3. Utilisation dans l'affectation de variable
Exemples
Erreurs courantes et précautions
Problèmes d'espaces:
Exemples
[ "$var"="value" ] # Incorrect, espace manquant
Mise entre guillemets des variables de chaîne:
Exemples
[ -n $var ] # Erreurs lorsque $var est vide
Comparaison numérique vs comparaison de chaînes:
Exemples
[ "10" > "2" ] # Incorrect, il s'agit d'une comparaison de chaînes (lexicographique)
Test de fichier:
Exemples
[ -f $file ] # Une erreur se produit lorsque le chemin contient des espaces
Exemples d'applications pratiques
Exemple 1 : Vérifier si le répertoire de sauvegarde existe
Exemples
if [ ! -d "$backup_dir" ]; then
mkdir -p "$backup"
echo "Création du répertoire de sauvegarde :$backup_dir"
fi
Exemple 2 : Valider la saisie de l'utilisateur
Exemples
if [ "$age" -lt 0 -o "$age" -gt 120 ]; then
echo "Entrée d'âge invalide"
exit 1
fi
Exemple 3 : Script de démarrage du service
Exemples
if [ "$1" = "start" ]; then
if [ -f "/var/run/service.pid" ]; then
echo "Le service est déjà en cours d'exécution"
else
echo "Démarrage du service..."
# Commande de démarrage
fi
elif [ "$1" = "stop" ]; then
# Logique d'arrêt
else
echo "Usage : $0 {start|stop}"
fi
Résumé
testLa commande est un outil fondamental dans la programmation de scripts shell. La maîtriser vous permet de :
- Implémenter une logique de branchement conditionnel
- Valider l'état des fichiers et des répertoires
- Comparer des chaînes et des valeurs numériques
- Construire des conditions d'évaluation complexes
Retenez les points clés :
- Le format avec crochets est plus couramment utilisé, mais faites attention aux espaces
- Placez les références aux variables entre guillemets doubles
- Distinguez les opérateurs de comparaison de chaînes et de comparaison numérique
- Utilisez la syntaxe moderne
&&et||pour remplacer-aet-o