English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Shell 基本运算符

Comme d'autres langages de programmation, Shell prend en charge plusieurs opérateurs, y compris :

  • Opérateurs arithmétiques

  • Opérateurs de relation

  • Opérateurs booléens

  • Opérateurs de chaîne

  • Opérateurs de test de fichier

Bash natif ne prend pas en charge les opérations mathématiques simples, mais peut être réalisé par d'autres commandes, telles que awk et expr, expr étant le plus couramment utilisé.

expr est un outil de calcul d'expression, qui peut effectuer des opérations de calcul d'expression.

Par exemple, la somme de deux nombres (Attention, utilisez les guillemets inversés ` ` au lieu des guillemets simples ' '.) :

#!/bin/bash
val=`expr 2 + 2`
echo "La somme des deux nombres est : $val"

执行脚本,输出结果如下所示:

La somme des deux nombres est : 4

Deux points à noter :

  •             Il doit y avoir des espaces entre l'expression et l'opérateur, par exemple 2+2 C'est incorrect, il doit être écrit 2 + 2C'est différent de la plupart des langages de programmation que nous connaissons.

  •             L'expression complète doit être encadrée par ` `, attention, ce sont des caractères différents des guillemets simples, situés sous la touche d'échappement.

Opérateurs arithmétiques

Le tableau suivant liste les opérateurs arithmétiques courants, en supposant que la variable a vaut 10,la variable b est 20 :

                Opérateurs                Explication                Exemple
                +                Addition                `expr $a + $b` retourne 30.
                -                Soustraction                `expr $a - $b` retourne -10。
                *                Multiplication                `expr $a \* $b` retourne  200.
                /                Division                `expr $b / $a` retourne 2。
                %                Reste                `expr $b % $a` retourne 0.
                =                Affectation                a=$b assigne la valeur de la variable b à a.
                ==                Egal. Utilisé pour comparer deux nombres, retourne true si ils sont identiques.                [ $a == $b ] retourne false.
                !=                Différent. Utilisé pour comparer deux nombres, retourne true si ils ne sont pas identiques.                [ $a != $b ] retourne true.

Attention :Les expressions conditionnelles doivent être placées entre crochets et doivent inclure des espaces, par exemple : [$a==$b] est incorrect, il doit être écrit [ $a == $b ]

在线示例

Voici des exemples d'opérateurs arithmétiques :

在线示例

#!/bin/bash
# auteur: tutoriel de base
# url:fr.oldtoolbag.com
a=10
b=20
val=`expr $a + $b`
echo "a + b : $val"
val=`expr $a - $b`
echo "a - b : $val"
val=`expr $a \* $b`
echo "a * b : $val"
val=`expr $b / $a`
echo "b / a : $val"
val=`expr $b % $a`
echo "b % a : $val"
if [ $a == $b ]
then
   echo "a est égal à b"
fi
if [ $a != $b ]
then
   echo "a est différent de b"
fi

执行脚本,输出结果如下所示:

a + b : 30
a - b : -10
a * b : 200
b / a : 2
b % a : 0
a est différent de b

Attention :

  •                     Multiplication*) doit être précédé d'un的反斜杠 (\) pour effectuer une multiplication.

  •                     if...then...fi est une instruction conditionnelle, qui sera expliquée plus tard.

  • La syntaxe de expr dans shell sous MAC est :$((expression)),dans l'expression, "*" n'a pas besoin de symbole d'échappement "\" .

Opérateurs de relation

Les opérateurs de relation ne supportent que les nombres, pas les chaînes de caractères, sauf si la valeur de la chaîne est un nombre.

Le tableau suivant liste les opérateurs de relation courants, en supposant que la variable a soit 10,la variable b est 20 :

                    Opérateurs                    Explication                    Exemple
                    -eq                    Vérifie si les deux nombres sont égaux, et retourne true si c'est le cas.                    [ \$a -eq \$b ] retourne false.
                    -ne                    Vérifie si les deux nombres ne sont pas égaux, et retourne true si ce n'est pas le cas.                    [ \$a -ne \$b ] retourne true.
                    -gt                    Vérifie si le nombre de gauche est supérieur au nombre de droite, et retourne true si c'est le cas.                    [ \$a -gt \$b ] retourne false.
                    -lt                    Vérifie si le nombre de gauche est inférieur au nombre de droite, et retourne true si c'est le cas.                    [ \$a -lt \$b ] retourne true.
                    -ge                    Vérifie si le nombre de gauche est supérieur ou égal au nombre de droite, et retourne true si c'est le cas.                    [ \$a -ge \$b ] retourne false.
                    -le                    Vérifie si le nombre de gauche est inférieur ou égal au nombre de droite, et retourne true si c'est le cas.                    [ \$a -le \$b ] retourne true.

在线示例

Les exemples d'opérateurs de relation sont les suivants :

#!/bin/bash
# author:基础教程网
# url:fr.oldtoolbag.com
a=10
b=20
if [ $a -eq \$b ]
then
   echo "\$a -eq \$b : a égal à b"
else
   echo "\$a -eq \$b: a non égal à b"
fi
if [ $a -ne \$b ]
then
   echo "\$a -ne \$b: a non égal à b"
else
   echo "\$a -ne \$b : a égal à b"
fi
if [ $a -gt \$b ]
then
   echo "\$a -gt \$b: a supérieur à b"
else
   echo "\$a -gt \$b: a non supérieur à b"
fi
if [ $a -lt \$b ]
then
   echo "\$a -lt \$b: a inférieur à b"
else
   echo "\$a -lt \$b: a non inférieur à b"
fi
if [ $a -ge \$b ]
then
   echo "\$a -ge \$b: a supérieur ou égal à b"
else
   echo "\$a -ge \$b: a inférieur à b"
fi
if [ $a -le \$b ]
then
   echo "\$a -le \$b: a inférieur ou égal à b"
else
   echo "\$a -le \$b: a supérieur à b"
fi

执行脚本,输出结果如下所示:

10 -eq 20: a non égal à b
10 -ne 20: a non égal à b
10 -gt 20: a non supérieur à b
10 -lt 20: a inférieur à b
10 -ge 20: a inférieur à b
10 -le 20: a inférieur ou égal à b

Opérateurs booléens

Le tableau suivant liste les opérateurs booléens courants, en supposant que la variable a soit 10,la variable b est 20 :

                    Opérateurs                    Explication                    Exemple
                    !                    Opération de négation, retourne false si l'expression est true, sinon retourne true.                    [ ! false ] retourne true.
                    -o                    Opération de disjonction, retourne true si au moins une expression est true.                    [ \$a -lt 20 -o \$b -gt 100 ] retourne true.
                    -a                    Opération de conjunction, retourne true uniquement si les deux expressions sont true.                    [ \$a -lt 20 -a \$b -gt 100 ] retourne false.

在线示例

Les exemples de calculs booléens sont les suivants :

#!/bin/bash
# auteur: tutoriel de base
# url:fr.oldtoolbag.com
a=10
b=20
if [ $a != $b ]
then
   echo "$a != $b : a n'est pas égal à b"
else
   echo "\$a == \$b: a égale à b"
fi
if [ $a -lt 100 -a $b -gt 15 ]
then
   echo "$a petit 100 : et $b grand 15 : retourne true"
else
   echo "$a petit 100 : et $b grand 15 : retourne false"
fi
if [ $a -lt 100 -o $b -gt 100 ]
then
   echo "$a petit 100 : ou $b grand 100 : retourne true"
else
   echo "$a petit 100 : ou $b grand 100 : retourne false"
fi
if [ $a -lt 5 -o $b -gt 100 ]
then
   echo "$a petit 5 ou $b grand 100 : retourne true"
else
   echo "$a petit 5 ou $b grand 100 : retourne false"
fi

执行脚本,输出结果如下所示:

10 != 20 : a n'est pas égal à b
10 petit 100 : et 20 : grand 15 : retourne true
10 petit 100 : ou 20 : grand 100 : retourne true
10 petit 5 ou 20 : grand 100 : retourne false

Opérateurs logiques

Voici présentés les opérateurs logiques de Shell, en supposant que la variable a soit 10,la variable b est 20:

                    Opérateurs                    Explication                    Exemple
                    &&                    ET logique                    [[ $a -lt 100 && $b -gt 100 ]] retourne false
                    ||                    OU logique                    [[ $a -lt 100 || $b -gt 100 ]] retourne true

在线示例

Les exemples d'opérateurs logiques suivants :

#!/bin/bash
# author:基础教程网
# url:fr.oldtoolbag.com
a=10
b=20
if [[ $a -lt 100 && $b -gt 100 ]]
then
   echo "Retourne true"
else
   echo "Retourne false"
fi
if [[ $a -lt 100 || $b -gt 100 ]]
then
   echo "Retourne true"
else
   echo "Retourne false"
fi

执行脚本,输出结果如下所示:

Retourne false
Retourne true

Opérateurs de chaîne

Le tableau suivant liste les opérateurs de chaîne courants, en supposant que la variable a soit "abc", et la variable b soit "efg" :

                    Opérateurs                    Explication                    Exemple
                    =                    Vérifiez si deux chaînes sont égales, retourne true si elles sont égales.                    [ $a = $b ] retourne false.
                    !=                    Vérifiez si deux chaînes ne sont pas égales, retourne true si elles ne sont pas égales.                    [ $a != $b ] retourne true.
                    -z                    Vérifiez si la longueur de la chaîne est 0, retourne true si elle est 0.                    [ -z $a ] retourne false.
                    -n                    Vérifiez si la longueur de la chaîne n'est pas 0, retourne true si elle n'est pas 0.                    [ -n "$a" ] retourne true.
                    $                    Vérifiez si la chaîne est vide, retourne true si elle n'est pas vide.                    [ $a ] retourne true.

在线示例

Les exemples d'opérateurs de chaîne suivants :

#!/bin/bash
# author:基础教程网
# url:fr.oldtoolbag.com
a="abc"
b="efg"
if [ $a = $b ]
then
   echo "$a = $b : a est égal à b"
else
   echo "$a = $b : a n'est pas égal à b"
fi
if [ $a != $b ]
then
   echo "$a != $b : a n'est pas égal à b"
else
   echo "$a != $b : a est égal à b"
fi
if [ -z $a ]
then
   echo "}}}-z $a : la longueur de la chaîne est 0"
else
   echo "}}}-z $a : la longueur de la chaîne n'est pas 0"
fi
if [ -n "$a" ]
then
   echo "}}}-n $a : la longueur de la chaîne n'est pas 0"
else
   echo "}}}-n $a : la longueur de la chaîne est 0"
fi
if [ $a ]
then
   echo "$a : la chaîne n'est pas vide"
else
   echo "$a : la chaîne est vide"
fi

执行脚本,输出结果如下所示:

abc = efg : a n'est pas égal à b
abc != efg : a n'est pas égal à b
-z abc : la longueur de la chaîne n'est pas 0
-n abc : la longueur de la chaîne n'est pas 0
abc : la chaîne n'est pas vide

Opérateurs de test de fichier

Les opérateurs de test de fichier sont utilisés pour vérifier divers attributs des fichiers Unix.

La description des attributs suivants s'applique :

                    Opérateur                    Explication                    Exemple
                    -b file                    Vérifie si le fichier est un fichier de périphérique de bloc, s'il l'est, retourne true.                    [ -b $file ] retourne false.
                    -c file                    Vérifie si le fichier est un fichier de périphérique de caractères, s'il l'est, retourne true.                    [ -c $file ] retourne false.
                    -d file                    Vérifie si le fichier est un répertoire, s'il l'est, retourne true.                    [ -d $file ] retourne false.
                    -f file                    Vérifie si le fichier est un fichier ordinaire (ni répertoire, ni fichier de périphérique), s'il l'est, retourne true.                    [ -f $file ] retourne true.
                    -g file                    Vérifie si le fichier a le bit SGID configuré, s'il l'est, retourne true.                    [ -g $file ] retourne false.
                    -k file                    Vérifie si le fichier a le bit粘着位(configuré), s'il l'est, retourne true.                    [ -k $file ] retourne false.
                    -p file                    Vérifie si le fichier est une pipe nommée, s'il l'est, retourne true.                    [ -p $file ] retourne false.
                    -u file                    Vérifie si le fichier a le bit SUID configuré, s'il l'est, retourne true.                    [ -u $file ] retourne false.
                    -r file                    Vérifie si le fichier est accessible en lecture, s'il l'est, retourne true.                    [ -r $file ] retourne true.
                    -w file                    Vérifie si le fichier est accessible en écriture, s'il l'est, retourne true.                    [ -w $file ] retourne true.
                    -x file                    Vérifie si le fichier est exécutable, s'il l'est, retourne true.                    [ -x $file ] retourne true.
                    -s file                    Vérifie si le fichier est vide (taille du fichier supérieure à 0), s'il ne l'est pas, retourne true.                    [ -s $file ] retourne true.
                    -e file                    Vérifie si le fichier (y compris le répertoire) existe, s'il en est ainsi, retourne true.                    [ -e $file ] retourne true.

其他检查符:

  • -S: 判断某文件是否 socket。

  • -L: 检测文件是否存在并且是一个符号链接。

在线示例

变量 file 表示文件 /var/www/w3codebox/test.sh,它的大小为 100 字节,具有 rwx 权限。下面的代码,将检测该文件的各种属性:
#!/bin/bash
# author:基础教程网
# url:fr.oldtoolbag.com
file="/var/www/w3codebox/test.sh"
if [ -r $file ]
then
   echo "文件可读"
else
   echo "文件不可读"
fi
if [ -w $file ]
then
   echo "文件可写"
else
   echo "文件不可写"
fi
if [ -x $file ]
then
   echo "文件可执行"
else
   echo "文件不可执行"
fi
if [ -f $file ]
then
   echo "文件为普通文件"
else
   echo "文件为特殊文件"
fi
if [ -d $file ]
then
   echo "文件是个目录"
else
   echo "文件不是个目录"
fi
if [ -s $file ]
then
   echo "文件不为空"
else
   echo "文件为空"
fi
if [ -e $file ]
then
   echo "文件存在"
else
   echo "文件不存在"
fi

执行脚本,输出结果如下所示:

文件可读
文件可写
文件可执行
文件为普通文件
文件不是个目录
文件不为空
文件存在