Unix / Linux - Opérateurs de base du shell

Il existe différents opérateurs pris en charge par chaque shell. Nous discuterons en détail du shell Bourne (shell par défaut) dans ce chapitre.

Nous allons maintenant discuter des opérateurs suivants -

  • Opérateurs arithmétiques
  • Opérateurs relationnels
  • Opérateurs booléens
  • Opérateurs de chaîne
  • Opérateurs de test de fichiers

Bourne shell n'avait à l'origine aucun mécanisme pour effectuer des opérations arithmétiques simples mais il utilise des programmes externes, non plus awk ou expr.

L'exemple suivant montre comment ajouter deux nombres -

#!/bin/sh

val=`expr 2 + 2`
echo "Total value : $val"

Le script ci-dessus générera le résultat suivant -

Total value : 4

Les points suivants doivent être pris en compte lors de l'ajout -

  • Il doit y avoir des espaces entre les opérateurs et les expressions. Par exemple, 2 + 2 n'est pas correct; il doit être écrit 2 + 2.

  • L'expression complète doit être placée entre ‘ ‘, a appelé le backtick.

Opérateurs arithmétiques

Les opérateurs arithmétiques suivants sont pris en charge par Bourne Shell.

Supposons une variable a détient 10 et variable b détient 20 alors -

Afficher des exemples

Opérateur La description Exemple
+ (Ajout) Ajoute des valeurs de chaque côté de l'opérateur `expr $ a + $ b` donnera 30
- (Soustraction) Soustrait l'opérande de droite de l'opérande de gauche `expr $ a - $ b` donnera -10
* (Multiplication) Multiplie les valeurs de chaque côté de l'opérateur `expr $ a \ * $ b` donnera 200
/ (Division) Divise l'opérande de gauche par l'opérande de droite `expr $ b / $ a` donnera 2
% (Module) Divise l'opérande de gauche par l'opérande de droite et renvoie le reste `expr $ b% $ a` donnera 0
= (Affectation) Assigne l'opérande droit dans l'opérande gauche a = $ b attribuerait la valeur de b dans a
== (Égalité) Compare deux nombres, si les deux sont identiques, alors renvoie vrai. [$ a == $ b] renverrait false.
! = (Pas l'égalité) Compare deux nombres, si les deux sont différents, renvoie vrai. [$ a! = $ b] renverrait vrai.

Il est très important de comprendre que toutes les expressions conditionnelles doivent être à l'intérieur d'accolades avec des espaces autour d'elles, par exemple [ $a == $b ] est correct alors que, [$a==$b] est incorrect.

Tous les calculs arithmétiques sont effectués en utilisant des entiers longs.

Opérateurs relationnels

Bourne Shell prend en charge les opérateurs relationnels suivants qui sont spécifiques aux valeurs numériques. Ces opérateurs ne fonctionnent pas pour les valeurs de chaîne, sauf si leur valeur est numérique.

Par exemple, les opérateurs suivants travailleront pour vérifier une relation entre 10 et 20 ainsi qu'entre "10" et "20" mais pas entre "dix" et "vingt".

Supposons une variable a détient 10 et variable b détient 20 alors -

Afficher des exemples

Opérateur La description Exemple
-eq Vérifie si la valeur de deux opérandes est égale ou non; si oui, alors la condition devient vraie. [$ a -eq $ b] n'est pas vrai.
-ne Vérifie si la valeur de deux opérandes est égale ou non; si les valeurs ne sont pas égales, la condition devient vraie. [$ a -ne $ b] est vrai.
-gt Vérifie si la valeur de l'opérande gauche est supérieure à la valeur de l'opérande droit; si oui, alors la condition devient vraie. [$ a -gt $ b] n'est pas vrai.
-lt Vérifie si la valeur de l'opérande gauche est inférieure à la valeur de l'opérande droit; si oui, alors la condition devient vraie. [$ a -lt $ b] est vrai.
-ge Vérifie si la valeur de l'opérande gauche est supérieure ou égale à la valeur de l'opérande droit; si oui, alors la condition devient vraie. [$ a -ge $ b] n'est pas vrai.
-le Vérifie si la valeur de l'opérande gauche est inférieure ou égale à la valeur de l'opérande droit; si oui, alors la condition devient vraie. [$ a -le $ b] est vrai.

Il est très important de comprendre que toutes les expressions conditionnelles doivent être placées entre des accolades carrées avec des espaces autour d'elles. Par exemple,[ $a <= $b ] est correct alors que, [$a <= $b] est incorrect.

Opérateurs booléens

Les opérateurs booléens suivants sont pris en charge par Bourne Shell.

Supposons une variable a détient 10 et variable b détient 20 alors -

Afficher des exemples

Opérateur La description Exemple
! C'est une négation logique. Cela inverse une condition vraie en une condition fausse et vice versa. [! false] est vrai.
-o C'est logique OR. Si l'un des opérandes est vrai, la condition devient vraie. [$ a -lt 20 -o $ b -gt 100] est vrai.
-a C'est logique AND. Si les deux opérandes sont vrais, la condition devient vraie sinon fausse. [$ a -lt 20 -a $ b -gt 100] est faux.

Opérateurs de chaîne

Les opérateurs de chaîne suivants sont pris en charge par Bourne Shell.

Supposons une variable a contient "abc" et variable b détient "efg" alors -

Afficher des exemples

Opérateur La description Exemple
= Vérifie si la valeur de deux opérandes est égale ou non; si oui, alors la condition devient vraie. [$ a = $ b] n'est pas vrai.
!= Vérifie si la valeur de deux opérandes est égale ou non; si les valeurs ne sont pas égales, la condition devient vraie. [$ a! = $ b] est vrai.
-z Vérifie si la taille de l'opérande de chaîne donnée est zéro; s'il a une longueur nulle, alors il renvoie vrai. [-z $ a] n'est pas vrai.
-n Vérifie si la taille de l'opérande de chaîne donnée est différente de zéro; si sa longueur est différente de zéro, alors elle renvoie true. [-n $ a] n'est pas faux.
str Vérifie si strn'est pas la chaîne vide; s'il est vide, il renvoie false. [$ a] n'est pas faux.

Opérateurs de test de fichiers

Nous avons quelques opérateurs qui peuvent être utilisés pour tester diverses propriétés associées à un fichier Unix.

Supposons une variable file contient un nom de fichier existant "test" dont la taille est de 100 octets et a read, write et execute permission sur -

Afficher des exemples

Opérateur La description Exemple
-b file Vérifie si le fichier est un fichier spécial de bloc; si oui, alors la condition devient vraie. [-b $ fichier] est faux.
-c file Vérifie si le fichier est un fichier spécial de caractères; si oui, alors la condition devient vraie. [-c $ fichier] est faux.
-d file Vérifie si le fichier est un répertoire; si oui, alors la condition devient vraie. [-d $ fichier] n'est pas vrai.
-f file Vérifie si le fichier est un fichier ordinaire par opposition à un répertoire ou un fichier spécial; si oui, alors la condition devient vraie. [-f $ fichier] est vrai.
-g file Vérifie si le fichier a son ensemble de bits d'ID de groupe (SGID); si oui, alors la condition devient vraie. [-g $ fichier] est faux.
-k file Vérifie si le fichier a son bit collant défini; si oui, alors la condition devient vraie. [-k $ fichier] est faux.
-p file Vérifie si le fichier est un tube nommé; si oui, alors la condition devient vraie. [-p $ fichier] est faux.
-t file Vérifie si le descripteur de fichier est ouvert et associé à un terminal; si oui, alors la condition devient vraie. [-t $ fichier] est faux.
-u file Vérifie si le fichier a son bit Set User ID (SUID) défini; si oui, alors la condition devient vraie. [-u $ fichier] est faux.
-r file Vérifie si le fichier est lisible; si oui, alors la condition devient vraie. [-r $ fichier] est vrai.
-w file Vérifie si le fichier est accessible en écriture; si oui, alors la condition devient vraie. [-w $ fichier] est vrai.
-x file Vérifie si le fichier est exécutable; si oui, alors la condition devient vraie. [-x $ fichier] est vrai.
-s file Vérifie si le fichier a une taille supérieure à 0; si oui, alors la condition devient vraie. [-s $ fichier] est vrai.
-e file Vérifie si le fichier existe; est vrai même si le fichier est un répertoire mais existe. [-e $ fichier] est vrai.

Opérateurs Shell C

Le lien suivant vous donnera une brève idée des opérateurs C Shell -

Opérateurs Shell C

Opérateurs Korn Shell

Le lien suivant vous aide à comprendre les opérateurs Korn Shell -

Opérateurs Korn Shell