GNU/Linux >> Tutoriels Linux >  >> Linux

Déclarations Bash If-Else - Tout ce que vous devez savoir sur

Cet article couvre les principes de base des scripts shell Bash et décrit les constructions logiques les plus largement utilisées, y compris le seul if déclaration, if-else déclaration et elif déclaration. En plus de cela, nous couvrirons la manière correcte de comparer des chaînes et des nombres. Améliorez votre expérience du shell Linux en 5 minutes !

Chaque fois que vous êtes un administrateur système expérimenté ou un utilisateur Linux débutant, il est utile de connaître les principes fondamentaux des scripts shell. Cette compétence vous permet d'automatiser des tâches répétables sur un ou plusieurs serveurs. Généralement, ces tâches incluent l'installation de logiciels et la configuration de tous les services système.

Instruction Si

si sert de noyau fondamental pour tous les langages de programmation. Cette déclaration aide à implémenter la logique de prise de décision dans votre programme ou un script. C'est pourquoi il est important de comprendre comment utiliser les différents si déclarations.

Voici la syntaxe de base :

if [ condition ]
then
  COMMANDS
fi

Où :

  • état – est l'opérateur logique du si déclaration.
  • COMMANDES – commandes exécutées lorsque la condition est vraie .
  • si, alors, fi – sont des mots clés de syntaxe.

Voici une liste des opérateurs de condition de test les plus souvent utilisés :

Opérateur Description
 ! EXPRESSION L'EXPRESSION est fausse.
-n CHAÎNE La longueur de STRING est supérieure à zéro.Text
-z CHAÎNE La longueur de STRING est zéro (la STRING est vide)
STRING1 =STRING2 STRING1 est égal à STRING2
STRING1 !=STRING2 STRING1 n'est pas égal à STRING2
ENTIER1 -eq ENTIER2 INTEGER1 est numériquement égal à INTEGER2
ENTIER1 -gt ENTIER2 INTEGER1 est numériquement supérieur à INTEGER2
ENTIER1 -lt ENTIER2 INTEGER1 est numériquement inférieur à INTEGER2
-e FICHIER FILE existe
-d FICHIER FILE existe et c'est un répertoire
-s FICHIER FILE existe et sa taille est supérieure à zéro (FILE n'est pas vide.
-w FICHIER FILE existe et l'autorisation d'écriture est accordée.
-x FICHIER FILE existe et l'autorisation d'exécution est accordée.
-r FICHIER FILE existe et l'autorisation de lecture est accordée.

La chose la plus intéressante est que pendant l'exécution du script Bash, tout dans [ ] est passé au test utilitaire, qui renvoie soit true ou faux . Donc, si vous oubliez la syntaxe de l'opérateur, utilisez simplement sa page de manuel :

man test

Regardons le plus simple si exemple d'énoncé :

#!/bin/bash
var=2
if [ $var -eq 2 ]
then
  echo "var equals 2"
fi

Sortie attendue :

var equals 2

Dans l'exemple ci-dessus, nous définissons la variable var valeur à 2 , puis nous avons testé si la var la valeur est égale à (-eq2 et imprimé le message.

Dans la vraie vie, nous utilisons généralement if en combinaison avec des constructions de bouclage Bash (boucles for, boucles while, boucles until). Voici un exemple d'utilisation de if déclaration avec pour -boucle :

#!/bin/bash
for var in 1 2 3 4 5
do
  if [ $var -eq 3 ]
  then
    echo "Value 3 found"
    break
  fi
  echo var=$var
done

Sortie attendue :

var=1
var=2
Value 3 found

Dans cet exemple, nous parcourons la liste des nombres à partir de 1 à 5 dans le pour -loop et l'impression de la valeur de la variable, que nous venons de traiter. Lorsque la valeur 3 est trouvée, nous interrompons l'exécution du script.

En plus des exemples ci-dessus, vous pouvez utiliser le résultat d'un calcul mathématique dans le si déclaration :

#!/bin/bash
for var in {1..10}
do
  if (( $var % 2 == 0 ))
  then
    echo "$var is even number"
  fi
done

Dans l'exemple ci-dessus, nous vérifions les nombres pairs compris entre 1 et 10 .

Sortie attendue :

2 is even number
4 is even number
6 is even number
8 is even number
10 is even number

Maintenant, vous pouvez vérifier une sortie de commande Bash ou un résultat d'exécution. Essayons de vérifier que l'utilisateur existe dans le /etc/passwd fichier.

#!/bin/bash
user='root'
check_result=$( grep -ic "^$user" /etc/passwd )
if [ $check_result -eq 1 ]
then
  echo "$user user found"
fi

Dans l'exemple ci-dessus, nous utilisons grep commande pour rechercher dans /etc/passwd fichier :

grep -ic "^$user" /etc/passwd

Où :

  • -i – recherche insensible à la casse.
  • -c – renvoie le nombre de lignes trouvées (0 – rien trouvé ; 1 ou plus si quelque chose a été trouvé).
  • "^$utilisateur" – rechercher la chaîne qui commence (^ ) à partir de la valeur de $user variables.

Tout le reste de l'exemple doit être clair.

Sortie attendue :

root user found

Ensuite, vérifions que /etc/passwd fichier existe :

#!/bin/bash
file='/etc/passwd'
if [ -s $file ]
then
  echo "$file file found"
fi

Sortie attendue :

/etc/passwd file found

Instruction If-else

Après vous être familiarisé avec les principes de base si déclaration, voyons comment utiliser Bash if-else déclaration.

Voici la syntaxe générale :

if [ condition ]
then
  TRUE_COMMANDS
else
  FALSE_COMMANDS
fi

Où :

  • état – est l'opérateur logique du si déclaration.
  • TRUE_COMMANDS – commandes, qui sont exécutées si la condition est vraie.
  • FALSE_COMMANDS – commandes, qui sont exécutées si la condition est fausse.
  • si, alors, sinon, fi – sont des mots clés de syntaxe.

Pour montrer comment cela fonctionne, changeons un exemple, où nous avons détecté des nombres pairs. Maintenant, imprimons quel nombre est pair et lequel est impair :

#!/bin/bash
for var in {1..10}
do
  if (( $var % 2 == 0 ))
  then
    echo "$var is even number"
  else
    echo "$var is odd number"
  fi
done

Voici une sortie attendue :

1 is odd number
2 is even number
3 is odd number
4 is even number
5 is odd number
6 is even number
7 is odd number
8 is even number
9 is odd number
10 is even number

Déclaration Elif

Maintenant, que se passe-t-il si nous devons vérifier plusieurs conditions différentes lors de l'exécution de notre script ? Cela est également possible en utilisant l'instruction elif, qui est un raccourci de "else if ”.

Voici à quoi ressemble la syntaxe :

if [ condition_1 ]
then
  CONDITION_1_COMMANDS
elif [ condition_2 ]
then
  CONDITION_2_COMMANDS
else
  ALL_OTHER_COMMANDS
fi

Où :

  • état_1 – est la condition logique pour exécuter CONDITION_1_COMMANDS .
  • CONDITION_1_COMMANDES – commandes exécutées si la condition_1 est vrai .
  • CONDITION_2_COMMANDES – commandes exécutées si la condition_2 est vrai .
  • ALL_OTHER_COMMANDS – commandes exécutées lorsque condition_1 et condition_2 sont faux .
  • si, alors, elif, sinon, fi – sont des mots clés de syntaxe.

Regardons l'exemple suivant :

#/bin/bash

time=8
if [ $time -lt 10 ]
then
  echo "Good morning"
elif [ $time -lt 20 ]
then
  echo "Good day"
else
  echo "Good evening"
fi

Dans cet exemple, nous avons défini une heure variable sur 8 AM et a imprimé un message basé sur la valeur de l'heure.

Sortie attendue :

Good morning

Imbrication des instructions if

Maintenant que nous nous sommes familiarisés avec les bases, nous pouvons terminer ce sujet en apprenant à imbriquer les instructions if.

Voici un exemple :

#/bin/bash

value=5
if [ $value -lt 10 ]
then
  if [ $value -eq 5 ]
  then
    echo "Value equals 5"
  else
    echo "Value not equals 5"
  fi
else
  echo "value is greater than 10"
fi

Voici une sortie attendue :

Value equals 5

Opérateurs booléens

Il peut être utile de vérifier plusieurs conditions dans un seul si déclaration. Vous pouvez le faire en utilisant les opérateurs booléens suivants :

  • && – ET logique.
  • || – OU logique.

Voici un exemple rapide :

#!/bin/bash
username="andrei"
birthday="12/16"
today=$( date +"%m/%d")
if [ $USER = $username ] && [ $today = $birthday ]
then
  echo "Happy birthday\!"
fi

Dans cet exemple simple, nous vérifions que deux conditions sont vraies :

  • Le nom d'utilisateur de l'utilisateur connecté doit être égal à andrei.
  • La date d'aujourd'hui devrait être le 16 décembre.

Si les deux conditions sont vraies, nous imprimons "'Joyeux anniversaire !"

Déclaration de cas

Dans certaines situations, vous devrez peut-être avoir plus de 3 instructions elif pour archiver votre script. Dans ce cas, l'utilisation d'une instruction elif devient compliquée. Bash vous offre un meilleur moyen de gérer de telles situations en utilisant un case déclaration.

Voici la syntaxe :

case VARIABLE in
  VALUE_1)
    COMMANDS_FOR_VALUE_1
    ;;
  VALUE_2)
    COMMANDS_FOR_VALUE_2
    ;;
  *)
    DEFAULT_COMMANDS
    ;;
esac

Où :

  • VARIABLE – la variable dont la valeur sera comparée à VALUE_1 ou VALUE_2 .
  • COMMANDS_FOR_VALUE_1 – commandes à exécuter lorsque VARIABLE la valeur est VALUE_1 .
  • COMMANDS_FOR_VALUE_2 – commandes à exécuter lorsque VARIABLE la valeur est VALUE_2 .
  • DEFAULT_COMMANDS – commandes à exécuter lorsque VARIABLE la valeur n'était pas égale à l'une des conditions supérieures.
  • casdansesac – mots-clés de syntaxe.

Voici le modèle très courant pour traiter les entrées du script et démarrer, arrêter ou redémarrer le service en fonction de l'utilisateur saisie :

#!/bin/bash

case $1 in
  start)
    echo "Starting the service"
    ;;
  stop)
    echo "Stopping the service"
    ;;
  restart)
    echo "Restarting the service"
    ;;
  *)
    echo "Unknown action"
    ;;
esac

Dans cet exemple, nous vérifions la valeur de la valeur spéciale $1 Variable bash. Il contient le premier argument, fourni à un script. Par exemple, si vous enregistrez l'exemple ci-dessus dans un fichier service.sh et exécutez-le comme ceci :

bash service.sh start

1 $ contiendra le mot "start" comme valeur.

Le reste est géré par la logique de l'instruction case.

Résumé

Dans cet article, nous avons couvert les principes fondamentaux des scripts shell Bash et décrit les constructions logiques les plus largement utilisées, y compris le seul if déclaration, if-else déclaration et elif déclaration.

Nous espérons que vous avez trouvé cet article utile. Si oui, s'il vous plaît, s'il vous plaît, aidez-nous à le diffuser dans le monde !


Linux
  1. Tout ce que vous devez savoir sur MySQL

  2. Tout ce que vous devez savoir sur MySQL

  3. Comment utiliser Linux Time Command :tout ce que vous devez savoir

  4. Qu'est-ce que l'hébergement VPS ? Tout ce que vous devez savoir sur les serveurs privés virtuels

  5. Ce que les administrateurs système doivent savoir sur l'utilisation de Bash

Tout ce que vous devez savoir sur le serveur Linux OpenSSH

Tout ce que vous devez savoir sur le système d'exploitation Linux Zorin

Tout ce que vous devez savoir sur le système d'exploitation Peppermint Linux

Tout ce que vous devez savoir sur la distribution Linux Mint

Tout ce que vous devez savoir sur les inodes sous Linux

Commandes Bash utiles que vous ne connaissez peut-être pas