Latest web development tutorials

Shell opérateurs de base

Shell et d'autres langages de programmation, prend en charge une variété d'opérateurs, y compris:

  • Les opérateurs arithmétiques
  • opérateurs relationnels
  • Les opérateurs booléens
  • Opérateurs de chaînes
  • Fichier Opérateurs de test

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

expr est un outil de calcul de l'expression, de l'utiliser pour terminer l'opération d'expression de l'évaluateur.

Par exemple, pour ajouter deux nombres (notez l'utilisation de la `anti-guillemets au lieu de guillemets simples '):

#!/bin/bash

val=`expr 2 + 2`
echo "两数之和为 : $val"

Exécution instance »

Exécuter le script, dont la sortie est la suivante:

两数之和为 : 4

Deux choses à noter:

  • Entre les expressions et les opérateurs doivent disposer d'un espace, par exemple, 2 + 2 est faux, vous devez écrire 2 + 2, dont nous sommes familiers avec la plupart des langages de programmation sont pas les mêmes.
  • Expression complète pour être `` contenu, notez que ce caractère est pas couramment utilisé dans des guillemets simples, sous la touche Esc.

Les opérateurs arithmétiques

Le tableau suivant dresse la liste des opérateurs arithmétiques communs, en supposant une variable 10, la variable b est de 20:

opérateurs explication Exemples
+ addition `Expr $ suite b` + $ est 30.
- soustraction `Expr $ a - résultat b` $ est -10.
* multiplication `Expr $ a \ * Résultats $ de B` pour 200.
/ division `Expr $ b / $ result est a` 2.
% reste `$ B% résultat de $ a` expr est 0.
= affectation a = $ b variable b va affecter la valeur d'un.
== Equal. Permet de comparer deux chiffres, même rendement vrai. [$ A == $ b] renvoie false.
! = Non égal. Utilisé pour comparer deux nombres ne sont pas les mêmes rendements vrai. [$ A! = $ B] renvoie true.

Note: L'expression conditionnelle doit être placé entre crochets, et inclure un espace, par exemple:[$ a == $ b] est erronée et doit être écrit comme[$ a == $ b].

Exemples

Les opérateurs arithmétiques exemples sont les suivants:

#!/bin/bash
# author:本教程
# url:www.w3big.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 等于 b"
fi
if [ $a != $b ]
then
   echo "a 不等于 b"
fi

Exécuter le script, dont la sortie est la suivante:

a + b : 30
a - b : -10
a * b : 200
b / a : 2
b % a : 0
a 不等于 b

Remarque:

  • signe de multiplication (*) doit être ajouté devant une barre oblique inverse (\) afin de parvenir à la multiplication;
  • if ... then ... fi est des instructions conditionnelles, le suivi sera couvert.
  • Dans le shell MAC de la syntaxe de expr est: $ ((expression)), où l'expression "*" besoin d'échapper symbole "\."

opérateurs relationnels

Les opérateurs relationnels ne prennent en charge numérique, ne supporte pas la chaîne, à moins que la valeur de la chaîne est un nombre.

Le tableau suivant répertorie les opérateurs relationnels couramment utilisés, en supposant une variable 10, la variable b est de 20:

opérateurs explication Exemples
-eq Détecter si deux nombres sont égaux, rendements égaux vrais. [$ A $ -eq b] renvoie false.
-ne Détecter si deux nombres sont égaux, pas de rendements égaux vrai. [$ A -ne $ b] renvoie vrai.
-gt La gauche est plus grand que le nombre détecté sur la droite, et si oui, il retourne vrai. [$ A $ -gt b] renvoie false.
-lt la détection du numéro est inférieur à la droite de la gauche, et si oui, il retourne vrai. [$ A $ -lt b] renvoie vrai.
-ge Détecter si le nombre est égal à la droite du côté gauche de l'ensemble, et dans l'affirmative, il retourne vrai. [$ A $ -ge b] renvoie false.
-le Si le nombre de détection inférieure ou égale à la droite vers la gauche, si elle est, elle renvoie vrai. [$ A $ -le b] renvoie vrai.

Exemples

Des exemples opérateurs relationnels sont les suivants:

#!/bin/bash
# author:本教程
# url:www.w3big.com

a=10
b=20

if [ $a -eq $b ]
then
   echo "$a -eq $b : a 等于 b"
else
   echo "$a -eq $b: a 不等于 b"
fi
if [ $a -ne $b ]
then
   echo "$a -ne $b: a 不等于 b"
else
   echo "$a -ne $b : a 等于 b"
fi
if [ $a -gt $b ]
then
   echo "$a -gt $b: a 大于 b"
else
   echo "$a -gt $b: a 不大于 b"
fi
if [ $a -lt $b ]
then
   echo "$a -lt $b: a 小于 b"
else
   echo "$a -lt $b: a 不小于 b"
fi
if [ $a -ge $b ]
then
   echo "$a -ge $b: a 大于或等于 b"
else
   echo "$a -ge $b: a 小于 b"
fi
if [ $a -le $b ]
then
   echo "$a -le $b: a 小于或等于 b"
else
   echo "$a -le $b: a 大于 b"
fi

Exécuter le script, dont la sortie est la suivante:

10 -eq 20: a 不等于 b
10 -ne 20: a 不等于 b
10 -gt 20: a 不大于 b
10 -lt 20: a 小于 b
10 -ge 20: a 小于 b
10 -le 20: a 小于或等于 b

Les opérateurs booléens

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

opérateurs explication Exemples
! Non-fonctionnement, l'expression est true renvoie faux, sinon il retourne vrai. [! False] renvoie true.
-o Opération OU, il y a une véritable expression renvoie true. [$ A -LT 20 -o $ b -gt 100] retourne vrai.
-a Et les opérations, les deux expressions sont vraies avant de retourner vrai. [$ A -LT 20 -a $ b -gt 100] retourne false.

Exemples

des opérateurs booléens exemples sont les suivants:

#!/bin/bash
# author:本教程
# url:www.w3big.com

a=10
b=20

if [ $a != $b ]
then
   echo "$a != $b : a 不等于 b"
else
   echo "$a != $b: a 等于 b"
fi
if [ $a -lt 100 -a $b -gt 15 ]
then
   echo "$a -lt 100 -a $b -gt 15 : 返回 true"
else
   echo "$a -lt 100 -a $b -gt 15 : 返回 false"
fi
if [ $a -lt 100 -o $b -gt 100 ]
then
   echo "$a -lt 100 -o $b -gt 100 : 返回 true"
else
   echo "$a -lt 100 -o $b -gt 100 : 返回 false"
fi
if [ $a -lt 5 -o $b -gt 100 ]
then
   echo "$a -lt 100 -o $b -gt 100 : 返回 true"
else
   echo "$a -lt 100 -o $b -gt 100 : 返回 false"
fi

Exécuter le script, dont la sortie est la suivante:

10 != 20 : a 不等于 b
10 -lt 100 -a 20 -gt 15 : 返回 true
10 -lt 100 -o 20 -gt 100 : 返回 true
10 -lt 100 -o 20 -gt 100 : 返回 false

opérateurs logiques

Ce qui suit décrit l'opérateur logique Shell, en supposant une variable 10, la variable b est de 20:

opérateurs explication Exemples
&& ET logique [[$ A -LT 100 && $ b -gt 100]] renvoie false
|| OU logique [[$ A -LT 100 || $ b -gt 100]] Renvoie true

Exemples

Des exemples d'opérateurs logiques sont les suivantes:

#!/bin/bash
# author:本教程
# url:www.w3big.com

a=10
b=20

if [[ $a -lt 100 && $b -gt 100 ]]
then
   echo "返回 true"
else
   echo "返回 false"
fi

if [[ $a -lt 100 || $b -gt 100 ]]
then
   echo "返回 true"
else
   echo "返回 false"
fi

Exécuter le script, dont la sortie est la suivante:

返回 false
返回 true

Opérateurs de chaînes

Les listes suivantes de table couramment utilisés opérateurs de chaîne, pris en charge comme une variable "abc", la variable b est "efg":

opérateurs explication Exemples
= Détecter deux chaînes sont égales, les rendements égaux vrais. [$ A = $ b] renvoie false.
! = Détecter si deux chaînes sont égales, pas de rendements égaux vrai. [$ A! = $ B] renvoie true.
-z Détecter si la longueur de chaîne est de 0 pour 0 retourne vrai. [-z $ A] retourne false.
-n Détecter si la longueur de chaîne est de 0, retour non nul vrai. [-n $ A] retourne vrai.
str Détecter si la chaîne est vide, pas de retour vide vrai. [$ A] retourne vrai.

Exemples

Opérateurs de chaîne exemples sont les suivants:

#!/bin/bash
# author:本教程
# url:www.w3big.com

a="abc"
b="efg"

if [ $a = $b ]
then
   echo "$a = $b : a 等于 b"
else
   echo "$a = $b: a 不等于 b"
fi
if [ $a != $b ]
then
   echo "$a != $b : a 不等于 b"
else
   echo "$a != $b: a 等于 b"
fi
if [ -z $a ]
then
   echo "-z $a : 字符串长度为 0"
else
   echo "-z $a : 字符串长度不为 0"
fi
if [ -n $a ]
then
   echo "-n $a : 字符串长度不为 0"
else
   echo "-n $a : 字符串长度为 0"
fi
if [ $a ]
then
   echo "$a : 字符串不为空"
else
   echo "$a : 字符串为空"
fi

Exécuter le script, dont la sortie est la suivante:

abc = efg: a 不等于 b
abc != efg : a 不等于 b
-z abc : 字符串长度不为 0
-n abc : 字符串长度不为 0
abc : 字符串不为空

Fichier Opérateurs de test

opérateur de test de fichier est utilisé pour détecter une variété d'attributs de fichiers Unix.

Attribut de détection décrit comme suit:

opérateurs explication Exemples
-b fichier Détecter si le fichier est un fichier de périphérique bloc, et si oui, il retourne vrai. [$ File -b] retourne false.
-c fichier Détecter si le fichier est un fichier de périphérique de caractère, et si oui, il retourne vrai. [$ File -c] retourne false.
-d fichier Détecter si le fichier est un répertoire, et si oui, il retourne vrai. [$ File -d] retourne false.
-f fichier Détecter si le fichier est un fichier régulier (ni de fichier de répertoire ou périphérique), et si oui, il retourne vrai. [$ File -f] renvoie true.
-g fichier Détecter si un fichier a le bit SGID, et si oui, il retourne vrai. [$ File -g] retourne false.
-k fichier Détecter si un fichier a le sticky bit (Bit Post-it), et si oui, il retourne vrai. [$ File -k] retourne false.
-p fichier Détecter si le fichier est un tube nommé, et si oui, il retourne vrai. [$ File -p] retourne false.
-u fichier Détecter si un fichier a le bit SUID, et si oui, il retourne vrai. [$ File -u] retourne false.
-r fichier Il détecte si un fichier est lisible, et si oui, il retourne vrai. [$ File -r] renvoie true.
-w file Détecter si le fichier peut être écrit, et si oui, il retourne vrai. [$ File -w] renvoie true.
-x fichier Détecter si le fichier est exécutable, et si oui, il retourne vrai. [$ File -x] renvoie true.
-s fichier Détecter si le fichier est vide (la taille du fichier est supérieure à 0), pas de retour vide vrai. [$ File -s] renvoie true.
-e fichier Détecter fichier (y compris le répertoire) existe, et si oui, il retourne vrai. [$ File -e] renvoie true.

Exemples

fichier variable indique le fichier "/var/www/w3big/test.sh", sa taille est de 100 octets, avec des autorisations rwx. Le code suivant permet de détecter divers attributs du fichier:

#!/bin/bash
# author:本教程
# url:www.w3big.com

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

Exécuter le script, dont la sortie est la suivante:

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