GNU/Linux >> Tutoriels Linux >  >> Linux

6 Exemples d'expressions conditionnelles Bash ( -e, -eq, -z, !=, [, [[ ..)

L'expression bash est la combinaison d'opérateurs, de fonctionnalités ou de valeurs utilisées pour former une instruction conditionnelle bash. L'expression conditionnelle peut être une expression binaire ou unaire qui implique des commandes numériques, de chaîne ou toute autre commande dont le statut de retour est zéro en cas de succès.


Plusieurs expressions conditionnelles peuvent être utilisées pour tester les fichiers. Voici quelques expressions conditionnelles utiles.

  • [ -e filepath ] Renvoie vrai si le fichier existe.
  • [ -x filepath ] Renvoie true si le fichier existe et est exécutable.
  • [ -S filepath ] Renvoie true si le fichier existe et s'il s'agit d'un fichier socket.
  • [ expr1 -a expr2 ] Renvoie vrai si les deux expressions sont vraies.
  • [ expr1 -o expr2 ] Renvoie vrai si l'expression 1 ou 2 est vraie.

Pour plus d'expressions conditionnelles pour vérifier les fichiers, les chaînes et les chiffres, veuillez consulter la page de manuel bash.

Exemple Bash 1. Vérifier l'existence du fichier

L'extrait de code de script shell Bash suivant obtient le nom de fichier avec son chemin absolu, vérifie si le fichier existe ou non et renvoie les informations appropriées.

$ cat exist.sh
#! /bin/bash
file=$1
if [ -e $file ]
then
	echo -e "File $file exists"
else
	echo -e "File $file doesnt exists"
fi

$ ./exist.sh /usr/bin/boot.ini
File /usr/bin/boot.ini exists

Reportez-vous à notre article précédent pour comprendre les différents types d'instructions bash if.

Exemple de bash 2. Comparer des nombres

Le script ci-dessous lit deux nombres entiers de l'utilisateur et vérifie si les deux nombres sont égaux ou supérieurs ou inférieurs l'un à l'autre.

$ cat numbers.sh
#!/bin/bash
echo "Please enter first number"
read first
echo "Please enter second number"
read second

if [ $first -eq 0 ] && [ $second -eq 0 ]
then
	echo "Num1 and Num2 are zero"
elif [ $first -eq $second ]
then
	echo "Both Values are equal"
elif [ $first -gt $second ]
then
	echo "$first is greater than $second"
else
	echo "$first is lesser than $second"
fi

$ ./numbers.sh
Please enter first number
1
Please enter second number
1
Both Values are equal

$ ./numbers.sh
Please enter first number
3
Please enter second number
12
3 is lesser than 12

Si vous débutez avec les scripts bash, reportez-vous à notre didacticiel d'introduction à Bash.

Bash Exemple 3. Calculatrice arithmétique de base

Cet exemple lit l'entrée, qui est un type d'opération arithmétique que l'on souhaite effectuer sur les variables bash (inp1 et inp2). L'opération arithmétique peut être une addition, une soustraction ou une multiplication..

$ cat calculator.sh
#!/bin/bash
inp1=12
inp2=11
echo "1. Addition"
echo "2. Subtraction"
echo "3. Multiplication"
echo -n "Please choose a word [1,2 or 3]? "
read oper

if [ $oper -eq 1 ]
then
	echo "Addition Result " $(($inp1 + $inp2))
else
	if [ $oper -eq 2 ]
	then
		echo "Subtraction Result " $(($inp1 - $inp2))
	else
		if [ $oper -eq 3 ]
		then
			echo "Multiplication Result " $(($inp1 * $inp2))
		else
			echo "Invalid input"
		fi
	fi
fi

$ ./calculator.sh
1. Addition
2. Subtraction
3. Multiplication
Please choose a word [1,2 or 3]? 4
Invalid input

Savoir utiliser les paramètres spéciaux bash ( $*, $@, $#, $$, $!, $?, $-, $_ ) facilitera votre travail de script.

Bash Exemple 4. Lire et pinger l'adresse IP

Le script suivant est utilisé pour lire l'adresse IP et vérifier si l'adresse IP est accessible, et imprime le message approprié.

$ cat ipaddr.sh
#!/bin/bash
echo "Enter the Ipaddress"
read ip

if [ ! -z $ip ]
then
	ping -c 1 $ip
	if [ $? -eq 0 ] ; then
		echo "Machine is giving ping response"
	else
		echo "Machine is not pinging"
	fi
else
	echo "IP Address is empty"
fi

$ ./ipaddr.sh
Enter the Ipaddress
10.176.191.106

Pinging 10.176.191.106 with 32 bytes of data:

Reply from 10.176.191.106: bytes=32 time<1ms TTL=128

Ping statistics for 10.176.191.106:
    Packets: Sent = 1, Received = 1, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 0ms, Maximum = 0ms, Average = 0ms
Machine is giving ping response

Dans cet exemple, -z renvoie vrai si l'adresse IP est de longueur nulle, lorsque la condition est précédée de ! (négation) opérateur, si l'expression est fausse, elle entre dans si partie et s'exécute. Ainsi, lorsque l'adresse IP n'est pas nulle, il entre et vérifie si l'adresse IP est accessible.

Exemple de bash 5. Script d'installation

Le script d'installation de la plupart des packages ne permettra pas de les exécuter en tant qu'utilisateur root. Le script vérifie l'utilisateur qui exécute et renvoie l'erreur.

Le script suivant vous permet d'exécuter le script d'installation Oracle uniquement si l'utilisateur qui exécute n'est pas root.

$ cat preinstaller.sh
#!/bin/bash
if [ `whoami` != 'root' ]; then
	echo "Executing the installer script"
	./home/oracle/databases/runInstaller.sh
else
	echo "Root is not allowed to execute the installer script"
fi

Executing the script as a root user,
# ./preinstaller.sh
Root is not allowed to execute the installer script

Dans cet exemple, la sortie de la commande whoami est comparée au mot « root ». Pour la comparaison de chaînes ==, !=, < et doivent être utilisés et pour la comparaison numérique eq, ne, lt et gt doivent être utilisés.

Bash Exemple 6. Parenthèses améliorées

Dans tous les exemples ci-dessus, nous n'avons utilisé que des crochets simples pour entourer l'expression conditionnelle, mais bash autorise les doubles crochets qui servent de version améliorée de la syntaxe à crochet unique.

$ cat enhanced.sh
#!/bin/bash
echo "Enter the string"
read str
if [[ $str == *condition* ]]
then
	echo "String "$str has the word \"condition\"
fi

$ ./enhanced.sh
Enter the string
conditionalstatement
String conditionalstatement has the word "condition"
  • [ est un synonyme de commande de test. Même s'il est intégré au shell, il crée un nouveau processus.
  • [[ en est une nouvelle version améliorée, qui est un mot-clé, pas un programme.
  • [[ est compris par Korn et Bash.
  • Dans l'exemple ci-dessus, si la variable $str contient la phrase "condition" n'importe où, la condition est vraie.
  • Il s'agit de la fonctionnalité de globalisation du shell, qui ne sera prise en charge que lorsque vous utilisez [[ (double crochets) et par conséquent, de nombreux arguments n'ont pas besoin d'être entre guillemets.

Linux
  1. Bash + Vérifier le nom par expression régulière ?

  2. Instruction Bash If-Else avec des exemples

  3. Exemples de boucle Bash For et de boucle While

  4. 5 exemples d'instructions Bash Case

  5. Bash for loop Exemples

Bash For Loop avec des exemples pratiques

35 exemples de scripts bash

La commande Bash Echo expliquée avec des exemples sous Linux

La redirection bash expliquée avec des exemples

Script Bash - Instructions conditionnelles

Syntaxe Bash If Else avec exemples