Latest web development tutorials

operadores básicos de Shell

Shell y otros lenguajes de programación, es compatible con una variedad de operadores, incluyendo:

  • Los operadores aritméticos
  • Los operadores relacionales
  • operadores booleanos
  • Los operadores de cuerda
  • Los operadores presentar prueba

Bash nativa no es compatible con las operaciones matemáticas sencillas, pero se puede lograr a través de otros comandos, como awk y expr, expr más comúnmente utilizado.

expr es una herramienta de cálculo de la expresión, lo utilizan para completar la operación evaluador de expresiones.

Por ejemplo, para agregar dos números (nótese el uso de la `anti-comillas en lugar de comillas simples '):

#!/bin/bash

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

Instancia en ejecución »

Ejecutar la secuencia de comandos, la salida es el siguiente:

两数之和为 : 4

Dos cosas a tener en cuenta:

  • Entre las expresiones y los operadores deben tener un espacio, por ejemplo, 2 + 2 es incorrecta, debe escribir 2 + 2, que estamos familiarizados con la mayoría de los lenguajes de programación no somos los mismos.
  • Expresión completa para ser `` contenida, tenga en cuenta que este personaje no es de uso común entre comillas simples, por debajo de la tecla Esc.

Los operadores aritméticos

La siguiente tabla muestra los operadores aritméticos comunes, asumiendo una variable 10, la variable b es 20:

operadores explicación Ejemplos
+ adición `Expr $ a + $ b` resultado es 30.
- resta `Expr $ a - $ resultado b` es -10.
* multiplicación `Expr $ a \ * $ B` resultados para 200.
/ división `Expr $ b / $ resultado es a` 2.
% resto `Expr $ b $ a`% resultado es 0.
= asignación a = b $ variable B se asignará el valor de a.
== Iguales. Se utiliza para comparar dos números, mismo rendimiento verdadero. [$ A == $ b] devuelve falso.
! = No es igual. Se utiliza para comparar dos números no son los mismos rendimientos cierto. [$ A! = $ B] devuelve verdadero.

Nota: La expresión condicional debe colocarse entre corchetes, e incluir un espacio, por ejemplo:[$ a == $ b] está mal y debe escribirse como[$ a == $ b].

Ejemplos

operadores aritméticos ejemplos son los siguientes:

#!/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

Ejecutar la secuencia de comandos, la salida es el siguiente:

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

Nota:

  • signo de multiplicación (*) debe agregarse delante de una barra invertida (\) con el fin de lograr la multiplicación;
  • si ... entonces ... fi sentencias condicionales, se cubrirá el seguimiento.
  • En el shell MAC de la sintaxis expr es: $ ((expresión)), donde la expresión "*" necesidad de escapar símbolo "\".

Los operadores relacionales

Los operadores relacionales sólo admiten digital, no soporta la cadena, a menos que el valor de la cadena es un número.

En la siguiente tabla se muestran los operadores relacionales de uso común, asumiendo una variable 10, la variable b es 20:

operadores explicación Ejemplos
-eq Detectar si dos números son iguales, iguales devuelve true. [$ A $ eq b] devuelve falso.
-ne Detectar si dos números son iguales, no iguales como resultado verdadero. [$ A $ -ne b] devuelve verdadero.
-gt La izquierda es mayor que el número detectado a la derecha, y si es así, devuelve true. [$ A $ -gt b] devuelve falso.
-lt detección de número es inferior a la derecha de la izquierda, y si es así, devuelve true. [$ A $ -lt b] devuelve verdadero.
-ge La detección de si el número es igual a la derecha de la parte izquierda de la grande, y si es así, devuelve cierto. [$ A $ -ge b] devuelve falso.
-le Si el número de detección de menos de o igual a la derecha a la izquierda, si lo es, se devuelve verdadero. [$ A $ -le b] devuelve verdadero.

Ejemplos

operadores relacionales ejemplos son los siguientes:

#!/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

Ejecutar la secuencia de comandos, la salida es el siguiente:

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

operadores booleanos

La siguiente tabla muestra los operadores booleanos de uso común, asumiendo una variable 10, la variable b es 20:

operadores explicación Ejemplos
! No está en funcionamiento, la expresión es verdadera retornos falsos, de lo contrario, devuelve verdadero. [! Falso] devuelve true.
-O O operación, hay una verdadera expresión devuelve verdadero. [$ A $ -lt 20 -o b -gt 100] devuelve verdadero.
-a Y las operaciones, las dos expresiones son verdaderas antes de regresar verdadera. [$ A $ -lt 20 -a b -gt 100] devuelve falso.

Ejemplos

operadores booleanos ejemplos son los siguientes:

#!/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

Ejecutar la secuencia de comandos, la salida es el siguiente:

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

Los operadores lógicos

A continuación se describe el operador lógico Shell, suponiendo una variable 10, la variable b es 20:

operadores explicación Ejemplos
&& Y lógico [[$ A $ -lt 100 && b -gt 100]] se vuelve falsa
|| O lógico [[$ A $ -lt 100 || b -gt 100]] Devuelve VERDADERO

Ejemplos

Ejemplos de operadores lógicos son los siguientes:

#!/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

Ejecutar la secuencia de comandos, la salida es el siguiente:

返回 false
返回 true

Los operadores de cuerda

La siguiente tabla muestra comúnmente utilizados operadores de cadenas, asumidos como "abc" variables, la variable b es "efg":

operadores explicación Ejemplos
= La detección de dos cadenas son iguales, iguales rendimientos reales. [A = $ $ b] devuelve falso.
! = Detectar si dos cadenas son iguales, no iguales como resultado verdadero. [$ A! = $ B] devuelve verdadero.
-z Detectar si la longitud de la cadena es de 0 a 0 devuelve cierto. [-z $ A] devuelve falso.
-n Detectar si la longitud de la cadena es 0, no nulo retorno verdadera. [-n $ A] devuelve verdadero.
str Detectar si la cadena está vacía, no está vacío de retorno verdadera. [$ A] devuelve verdadero.

Ejemplos

Operadores de cadena ejemplos son los siguientes:

#!/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

Ejecutar la secuencia de comandos, la salida es el siguiente:

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

Los operadores presentar prueba

operador de la prueba archivo se utiliza para detectar una variedad de atributos de archivo de Unix.

Atributo detección describe como sigue:

operadores explicación Ejemplos
-b archivo Detectar si el archivo es un archivo de dispositivo de bloques, y si es así, devuelve true. [-b $ Archivo] devuelve falso.
-c archivo Detectar si el archivo es un archivo de dispositivo de caracteres, y si es así, devuelve true. [-c $ Archivo] devuelve falso.
-d archivo Detectar si el archivo es un directorio, y si es así, devuelve true. [-d $ Archivo] devuelve falso.
-f archivo Detectar si el archivo es un archivo normal (ni archivo de directorio o dispositivo), y si es así, devuelve true. [-f $ Archivo] devuelve verdadero.
-g archivo Detectar si un archivo tiene el bit SGID, y si es así, devuelve true. [-g $ Archivo] devuelve falso.
-k archivo Detectar si un archivo tiene el bit pegajoso (sticky bit), y si es así, se devuelve verdadero. [-k $ Archivo] devuelve falso.
-p fichero Detectar si el archivo es una tubería con nombre, y si es así, devuelve true. [-p $ Archivo] devuelve falso.
-u archivo Detectar si un archivo tiene el bit SUID, y si es así, devuelve true. [-u $ Archivo] devuelve falso.
-r archivo Detecta si un archivo se puede leer, y si es así, devuelve true. [-r $ Archivo] devuelve verdadero.
-w fichero Detectar si el archivo se puede escribir, y si es así, devuelve true. [-w $ Archivo] devuelve verdadero.
-x archivo Detectar si el archivo es ejecutable, y si es así, devuelve true. [-x $ Archivo] devuelve verdadero.
-s fichero Detectar si el archivo está vacío (el tamaño del archivo es mayor que 0), no está vacío de retorno verdadera. [-s $ Archivo] devuelve verdadero.
-e archivo Detectar archivos (incluyendo el directorio) existe, y si es así, devuelve true. [-e $ Archivo] devuelve verdadero.

Ejemplos

archivo variable indica el "/var/www/w3big/test.sh" archivo, su tamaño es de 100 bytes, con permisos rwx. El siguiente código detectar varios atributos del archivo:

#!/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

Ejecutar la secuencia de comandos, la salida es el siguiente:

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