Dans ce tutoriel, nous allons vous guider à travers les bases de la Bash if
déclaration et de vous montrer comment l’utiliser dans vos scripts shell.
la prise de décision est l’un des concepts les plus fondamentaux de la programmation informatique. Comme dans tout autre langage de programmation, if
, if..else
, if..elif..else
et imbriquées if
états Bash peut être utilisé pour exécuter du code sur la base d’une certaine condition.,
si l’Instruction #
Bash if
le conditionnel peut avoir différentes formes. Les plus de base if
déclaration prend la forme suivante:
if TEST-COMMANDthen STATEMENTSfi
Le if
déclaration commence par la balise if
mot clé suivi de l’expression conditionnelle et le then
mot clé. L’instruction se termine par le mot-cléfi
.,
Si le TEST-COMMAND
donne True
, le STATEMENTS
est exécuté. Si TEST-COMMAND
renvoie False
, rien ne se passe, la balise STATEMENTS
est ignorée.
en général, il est recommandé de toujours indenter votre code et de séparer les blocs de code avec des lignes vides. La plupart des gens choisissent d’utiliser l’indentation à 4 espaces ou à 2 espaces. Les Indentations et les lignes vides rendent votre code plus lisible et organisé.,
prenons un exemple de script qui vérifie si un nombre donné est plus grand que 10:
#!/bin/bashecho -n "Enter a number: "read VARif ]then echo "The variable is greater than 10."fi
Enregistrer le code dans un fichier et de l’exécuter à partir de la ligne de commande:
bash test.sh
Le script vous invite à entrer un numéro. Si, par exemple, vous entrez 15, la balise test
commande évalue à true
car 15 est supérieur à 10, et le echo
commande à l’intérieur de la balise then
clause sera exécuté.
The variable is greater than 10.
si..,else #
Bash if..else
déclaration prend la forme suivante:
if TEST-COMMANDthen STATEMENTS1else STATEMENTS2fi
Si le TEST-COMMAND
donne True
, la balise STATEMENTS1
sera exécuté. Sinon, si TEST-COMMAND
renvoie False
, le STATEMENTS2
sera exécuté. Vous ne pouvez avoir qu’une seule clauseelse
dans l’instruction.,
ajoutons une clauseelse
à l’exemple de script précédent:
Si vous exécutez le code et entrez un nombre, le script affichera un message différent selon que le nombre est supérieur ou inférieur / égal à 10.
si..elif..else #
Bash if..elif..else
déclaration prend la forme suivante:
if TEST-COMMAND1then STATEMENTS1elif TEST-COMMAND2then STATEMENTS2else STATEMENTS3fi
Si le TEST-COMMAND1
donne True
, la balise STATEMENTS1
sera exécuté., Si le TEST-COMMAND2
donne True
, le STATEMENTS2
sera exécuté. Si aucune des commandes de test pour évaluer True
, le STATEMENTS2
est exécutée.
Vous pouvez avoir une ou plusieurs clauseselif
dans l’instruction. La clauseelse
est facultative.
les conditions sont évaluées séquentiellement., Une fois qu’une condition renvoie True
les conditions restantes ne sont pas exécutées et le contrôle du programme se déplace à la fin des instructions if
.
nous allons ajouter un elif
clause précédente script:
if Imbriquées #
Bash permet d’imbriquer if
instructions à l’intérieur de la balise if
consolidés. Vous pouvez placer plusieurs instructionsif
dans une autre instructionif
.,
le script suivant vous demandera d’entrer trois nombres et imprimera le plus grand nombre parmi les trois nombres.
Voici comment la production va ressembler à ça:
Enter the first number: 4Enter the second number: 7Enter the third number: 27 is the largest number.
case
déclaration au lieu imbriquée if
consolidés.Plusieurs Conditions #
logique OR
et AND
opérateurs vous permettent d’utiliser plusieurs conditions dans le if
consolidés.,
Voici une autre version du script pour imprimer le plus grand nombre parmi les trois numéros. Dans cette version, au lieu des instructions imbriquées if
, nous utilisons l’opérateur logique AND
(&&
).
opérateurs de Test #
dans Bash, la commandetest
prend l’une des formes de syntaxe suivantes:
test EXPRESSION]
pour rendre le script portable, préférez utiliser l’ancien test[
commande disponible sur tous les shells POSIX., La nouvelle version améliorée de la commande test
[[
(doubles crochets) est prise en charge sur la plupart des systèmes modernes utilisant Bash, Zsh et Ksh comme shell par défaut.
Pour annuler l’expression de test, l’utilisation de la logique NOT
(!
) de l’opérateur. Lorsque vous comparez des chaînes, Utilisez toujours des guillemets simples ou doubles pour éviter les problèmes de fractionnement et de globulation de mots.,
ci-Dessous sont quelques-uns des plus couramment utilisé des opérateurs:
-
-n
VAR
– Vrai si la longueur deVAR
est plus grand que zéro. -
-z
VAR
– Vrai si leVAR
est vide. -
STRING1 = STRING2
– Vrai siSTRING1
etSTRING2
sont égaux. -
STRING1 != STRING2
– Vrai siSTRING1
etSTRING2
ne sont pas égaux., -
INTEGER1 -eq INTEGER2
– True ifINTEGER1
andINTEGER2
are equal. -
INTEGER1 -gt INTEGER2
– True ifINTEGER1
is greater thanINTEGER2
. -
INTEGER1 -lt INTEGER2
– True ifINTEGER1
is less thanINTEGER2
. -
INTEGER1 -ge INTEGER2
– True ifINTEGER1
is equal or greater than INTEGER2. -
INTEGER1 -le INTEGER2
– True ifINTEGER1
is equal or less thanINTEGER2
., -
-h
FILE
– True if theFILE
exists and is a symbolic link. -
-r
FILE
– True if theFILE
exists and is readable. -
-w
FILE
– True if theFILE
exists and is writable. -
-x
FILE
– True if theFILE
exists and is executable., -
-d
FILE
– Vrai si leFILE
existe et est un répertoire. -
-e
FILE
– Vrai si leFILE
existe et est un fichier, quel que soit le type (nœud, annuaire, socket, etc.). -
-f
FILE
– Vrai si leFILE
existe et est un fichier normal (pas un répertoire ou un périphérique).,
Conclusion #
les instructions if
, if..else
Et if..elif..else
vous permettent de contrôler le flux d’exécution du script Bash en évaluant des conditions données.