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é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:
文件可读 文件可写 文件可执行 文件为普通文件 文件不是个目录 文件不为空 文件存在