Explicación detallada de operadores básicos de shell de Linux

El shell admite múltiples operadores.

1. Operador aritmético 2. Operador
 relacional
 3. Operador booleano
 4. Operador de cadena
 5. Operador de prueba de archivo

Native bash no admite operaciones matemáticas simples, pero puede implementarse mediante otros comandos, como awk y expr, expr es el más utilizado.
expr es una herramienta de cálculo de expresiones, que se puede utilizar para completar la operación de evaluación de expresiones.

Por ejemplo, agregue dos números (tenga en cuenta que se utilizan comillas invertidas en lugar de comillas simples):

#! / Bin / fiesta de 

Val = `expr 2 + 2 ` 
eco " dos números es: $ Val "

Ejecute el script, el resultado es el siguiente:

La suma de los dos números es: 4
Dos puntos a tener en cuenta:
 1. Debe haber un espacio entre la expresión y el operador, por ejemplo, 2 + 2 está mal, debe escribirse como 2 + 2 , que es diferente de la mayoría de los lenguajes de programación con los que estamos familiarizados.
2. La expresión completa debe incluirse en ``, tenga en cuenta que este carácter no es una comilla simple común, bajo la tecla Esc.

Operador aritmético

La siguiente tabla enumera los operadores aritméticos de uso común, suponiendo que la variable a es 10 y la variable b es 20:

Operador Explicación Ejemplos
+ Además `expr $ a + $ b` resulta en 30
- Resta `expr $ a- $ b` resulta en -10
* * Multiplicación `expr $ a \ * $ b` da como resultado 200
/ / División `expr $ b / $ a` resulta en 2
% Equilibrio `expr $ b% $ a` resulta en 0
= Cesión a = $ b asignará el valor de la variable b a
== Igual Se usa para comparar dos números y devuelve verdadero si son iguales. [$ a == $ b] devuelve falso
! = No igual No es igual Utilizado para comparar dos números, devuelve verdadero si no son lo mismo. [$ a! = $ b] devuelve verdadero

Nota: La expresión condicional debe colocarse entre corchetes y debe tener espacios, por ejemplo: [$ a == $ b] es incorrecta y debe escribirse como [$ a == $ b]

Ejemplos:

#! / 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] 
entonces 
   echo " a es igual a b " 
fi 
si [$ a! = $ b] 
entonces 
   echo " a no es igual a b " 
fi

Ejecute el script, el resultado es el siguiente:

a + b: 30 
a -b: -10 
a * b: 200 
b / a: 2 
b % a: 0 
a no es igual a b

Nota :
• La barra invertida (\) debe agregarse antes del signo de multiplicación (*) para realizar la operación de multiplicación;
• si ... entonces ... fi es una declaración condicional, que se explicará más adelante.
• La sintaxis expr del shell en MAC es: $ ((expresión)), donde el "*" en la expresión no requiere el símbolo de escape "\".

 

Operador relacional

Los operadores relacionales solo admiten números, no cadenas, a menos que el valor de la cadena sea un número.
La siguiente tabla enumera los operadores relacionales de uso común, suponiendo que la variable a es 10 y la variable b es 20:

Operador Explicación Ejemplos
-eq Comprueba si dos números son iguales y devuelve verdadero si son iguales. [$ a -eq $ b] devuelve falso.
-ne Verifique si dos números no son iguales, devuelva verdadero si no son iguales [$ a -ne $ b] devuelve verdadero.
-gt Compruebe si el número de la izquierda es mayor que el de la derecha y, de ser así, devuelva verdadero. [$ a -gt $ b] devuelve falso.
-lt Compruebe si el número de la izquierda es menor que el de la derecha y, de ser así, devuelva verdadero. [$ a -lt $ b] devuelve verdadero.
-Proporcionar Verifique si el número a la izquierda es mayor o igual que el derecho, y si es así, devuelva verdadero. [$ a -ge $ b] devuelve falso.
-el Verifique si el número a la izquierda es menor o igual que el derecho, y si es así, devuelva verdadero. [$ a -le $ b] devuelve verdadero.

 

Operadores booleanos La
siguiente tabla enumera los operadores booleanos de uso común, suponiendo que la variable a es 10 y la variable b es 20:

Operador Explicación Ejemplos
Ninguna operación, falso si la expresión es verdadera, de lo contrario es verdadera. [! false] devuelve verdadero.
-o O operación, si una expresión es verdadera, devuelve verdadero. [$ a -lt 20 -o $ b -gt 100] devuelve verdadero.
-una Y operación, ambas expresiones son verdaderas para devolver verdadero. [$ a -lt 20 -a $ b -gt 100] devuelve falso.

 

Operador lógico

Introduzca los operadores lógicos de Shell, suponiendo que la variable a es 10 y la variable b es 20:

Operador Explicación Ejemplos
&& Y lógico [[$ a -lt 100 && $ b -gt 100]] 返回 falso
|| O lógico [[$ a -lt 100 || $ b -gt 100]] devuelve verdadero

 

Operador de cadena

La siguiente tabla enumera los operadores de cadenas de uso común, suponiendo que la variable a es "abc" y la variable b es "efg":

Operador Explicación Ejemplos
= Comprueba si dos cadenas son iguales y devuelve verdadero si son iguales. [$ a = $ b] devuelve falso.
! = Compruebe si dos cadenas son iguales y devuelva verdadero si no son iguales. [$ a! = $ b] devuelve verdadero.
-con Compruebe si la longitud de la cadena es 0 y devuelva verdadero si es 0. [-z $ a] devuelve falso.
-norte Compruebe si la longitud de la cadena no es 0 y devuelva verdadero si no es 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

脚本执行结果:

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

 

Supongo que te gusta

Origin www.cnblogs.com/hankyoon/p/12728320.html
Recomendado
Clasificación