Explication détaillée des opérateurs de base du shell Linux

Le shell prend en charge plusieurs opérateurs

1. Opérateur arithmétique 2. Opérateur
 relationnel 3. Opérateur
 booléen
 4. Opérateur chaîne
 5. Opérateur test de fichier

Native bash ne prend pas en charge les opérations mathématiques simples, mais peut être implémenté par d'autres commandes, telles que awk et expr, expr est la plus utilisée.
expr est un outil de calcul d'expression, qui peut être utilisé pour terminer l'opération d'évaluation d'expression.

Par exemple, ajoutez deux nombres (notez que les guillemets sont utilisés à la place des guillemets simples):

#! / Bin / bash 

Val = 'expr 2 + 2 ` 
echo " deux chiffres est la suivante : $ Val "

Exécutez le script, la sortie est la suivante:

La somme des deux nombres est: 4
Deux points à noter:
 1. Il doit y avoir un espace entre l'expression et l'opérateur, par exemple, 2 + 2 est faux, il doit être écrit comme 2 + 2 , ce qui est différent de la plupart des langages de programmation que nous connaissons.
2. L' expression complète doit être incluse dans ``, notez que ce caractère n'est pas un guillemet simple courant, sous la touche Échap.

Opérateur arithmétique

Le tableau suivant répertorie les opérateurs arithmétiques couramment utilisés, en supposant que la variable a est 10 et la variable b est 20:

Opératrice Explication Des exemples
+ Addition `expr $ a + $ b` donne 30
- Soustraction `expr $ a- $ b` donne -10
* Multiplication `expr $ a \ * $ b` donne 200
/ Division `expr $ b / $ a` donne 2
% Équilibre `expr $ b% $ a` donne 0
= Affectation a = $ b affectera la valeur de la variable b à a
== Égal Utilisé pour comparer deux nombres et renvoie vrai s'ils sont identiques. [$ a == $ b] renvoie faux
! = Pas égal Pas égal. Utilisé pour comparer deux nombres, renvoie vrai s'ils ne sont pas identiques. [$ a! = $ b] renvoie vrai

Remarque: L' expression conditionnelle doit être placée entre crochets et doit avoir des espaces, par exemple: [$ a == $ b] est incorrect et doit être écrit comme [$ a == $ b]

Exemples:

#! / bin / bash 

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 " 

si [$ a == $ b] 
alors 
   écho" a est égal à b " 
fi 
si [$ a! = $ b] 
alors 
   écho " a n'est pas égal à b " 
fi

Exécutez le script, la sortie est la suivante:

a + b: 30 
a -b: -10 
a * b: 200 
b / a: 2 
b % a: 0 
a n'est pas égal à b

Remarque :
• La barre oblique inverse (\) doit être ajoutée avant le signe de multiplication (*) pour réaliser l'opération de multiplication,
• si ... alors ... fi est une instruction conditionnelle, qui sera expliquée plus loin.
• La syntaxe expr du shell dans MAC est: $ ((expression)), où le "*" dans l'expression ne nécessite pas le symbole d'échappement "\".

 

Opérateur relationnel

Les opérateurs relationnels prennent uniquement en charge les nombres, pas les chaînes, sauf si la valeur de chaîne est un nombre.
Le tableau suivant répertorie les opérateurs relationnels couramment utilisés, en supposant que la variable a est 10 et la variable b est 20:

Opératrice Explication Des exemples
-eq Vérifie si deux nombres sont égaux et renvoie vrai s'ils sont égaux. [$ a -eq $ b] renvoie false.
-ne Vérifiez si deux nombres ne sont pas égaux, retournez vrai s'ils ne sont pas égaux [$ a -ne $ b] renvoie vrai.
-gt Vérifiez si le nombre de gauche est supérieur à celui de droite et si c'est le cas, retournez vrai. [$ a -gt $ b] renvoie false.
-lt Vérifiez si le nombre de gauche est inférieur à celui de droite et si c'est le cas, retournez vrai. [$ a -lt $ b] renvoie vrai.
-Assurer Vérifiez si le nombre sur la gauche est supérieur ou égal à la droite, et si c'est le cas, retournez vrai. [$ a -ge $ b] renvoie false.
-le Vérifiez si le nombre à gauche est inférieur ou égal à la droite, et si c'est le cas, retournez vrai. [$ a -le $ b] renvoie vrai.

 

Opérateurs booléens Le
tableau suivant répertorie les opérateurs booléens couramment utilisés, en supposant que la variable a est 10 et la variable b est 20:

Opératrice Explication Des exemples
Aucune opération, faux si l'expression est vraie, sinon vraie. [! false] renvoie true.
-o Opération OR, si une expression est vraie, elle retourne vrai. [$ a -lt 20 -o $ b -gt 100] renvoie vrai.
-une Et opération, les deux expressions sont vraies pour retourner vrai. [$ a -lt 20 -a $ b -gt 100] renvoie false.

 

Opérateur logique

Présentez les opérateurs logiques de Shell, en supposant que la variable a est 10 et la variable b est 20:

Opératrice Explication Des exemples
&& ET logique [[$ a -lt 100 && $ b -gt 100]] 返回 false
|| OU logique [[$ a -lt 100 || $ b -gt 100]] renvoie vrai

 

Opérateur de chaîne

Le tableau suivant répertorie les opérateurs de chaîne couramment utilisés, en supposant que la variable a est "abc" et la variable b est "efg":

Opératrice Explication Des exemples
= Vérifie si deux chaînes sont égales et renvoie vrai si elles sont égales. [$ a = $ b] renvoie false.
! = Vérifiez si deux chaînes sont égales et renvoyez true si elles ne sont pas égales. [$ a! = $ b] renvoie vrai.
-avec Vérifiez si la longueur de la chaîne est 0 et renvoyez true si elle est 0. [-z $ a] renvoie false.
-n Vérifiez si la longueur de la chaîne n'est pas 0 et renvoyez true si elle n'est pas 0. [ -n "$a" ] 返回 true。
$ 检测字符串是否为空,不为空返回 true。 [ $a ] 返回 true。

 

文件测试运算符

文件测试运算符用于检测 Unix 文件的各种属性。

属性检测描述如下:

运算符 说明 例子
-b file 检测文件是否是块设备文件,如果是,则返回 true。 [ -b $file ] 返回 false。
-c file 检测文件是否是字符设备文件,如果是,则返回 true。 [ -c $file ] 返回 false。
-d file 检测文件是否是目录,如果是,则返回 true。 [ -d $file ] 返回 false。
-f file 检测文件是否是普通文件(既不是目录,也不是设备文件),如果是,则返回 true。 [ -f $file ] 返回 true。
-g file 检测文件是否设置了 SGID 位,如果是,则返回 true。 [ -g $file ] 返回 false。
-k file 检测文件是否设置了粘着位(Sticky Bit),如果是,则返回 true。 [ -k $file ] 返回 false。
-p file 检测文件是否是有名管道,如果是,则返回 true。 [ -p $file ] 返回 false。
-u file 检测文件是否设置了 SUID 位,如果是,则返回 true. [ -u $file ] 返回 false。
-r file 检测文件是否可读,如果是,则返回 true。 [ -r $file ] 返回 true。
-w file 检测文件是否可写,如果是,则返回 true。 [ -w $file ] 返回 true。
-x file 检测文件是否可执行,如果是,则返回 true。 [ -x $file ] 返回 true。
-s file 检测文件是否为空(文件大小是否大于0),不为空返回 true。 [ -s $file ] 返回 true。
-e file 检测文件(包括目录)是否存在,如果是,则返回 true。 [ -e $file ] 返回 true。

其他检查符:
-S: 判断某文件是否 socket。
-L: 检测文件是否存在并且是一个符号链接。

实例
变量 file 表示文件 /var/www/runoob/test.sh,它的大小为 100 字节,具有 rwx 权限。下面的代码,将检测该文件的各种属性:

#!/bin/bash

file="/var/www/runoob/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

脚本执行结果:

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

 

Je suppose que tu aimes

Origine www.cnblogs.com/hankyoon/p/12728320.html
conseillé
Classement