Unix / Linux - Operadores básicos de Shell
Hay varios operadores compatibles con cada shell. Discutiremos en detalle sobre el shell Bourne (shell predeterminado) en este capítulo.
Ahora discutiremos los siguientes operadores:
- Operadores aritméticos
- Operadores relacionales
- Operadores booleanos
- Operadores de cadenas
- Operadores de prueba de archivos
El shell Bourne no tenía originalmente ningún mecanismo para realizar operaciones aritméticas simples, pero también usa programas externos awk o expr.
El siguiente ejemplo muestra cómo sumar dos números:
#!/bin/sh
val=`expr 2 + 2`
echo "Total value : $val"
El script anterior generará el siguiente resultado:
Total value : 4
Los siguientes puntos deben tenerse en cuenta al agregar:
Debe haber espacios entre operadores y expresiones. Por ejemplo, 2 + 2 no es correcto; debe escribirse como 2 + 2.
La expresión completa debe incluirse entre ‘ ‘, llamado tilde.
Operadores aritméticos
Los siguientes operadores aritméticos son compatibles con Bourne Shell.
Asumir variable a tiene 10 y variable b sostiene 20 entonces -
Operador | Descripción | Ejemplo |
---|---|---|
+ (Adición) | Agrega valores a ambos lados del operador | `expr $ a + $ b` dará 30 |
- (Resta) | Resta el operando de la mano derecha del operando de la mano izquierda | `expr $ a - $ b` dará -10 |
* (Multiplicación) | Multiplica los valores a ambos lados del operador | `expr $ a \ * $ b` dará 200 |
/ (División) | Divide el operando de la izquierda por el operando de la derecha | `expr $ b / $ a` dará 2 |
% (Módulo) | Divide el operando de la izquierda por el operando de la derecha y devuelve el resto | `expr $ b% $ a` dará 0 |
= (Asignación) | Asigna operando derecho en operando izquierdo | a = $ b asignaría el valor de b en a |
== (Igualdad) | Compara dos números, si ambos son iguales, devuelve verdadero. | [$ a == $ b] devolvería falso. |
! = (No igualdad) | Compara dos números, si ambos son diferentes, devuelve verdadero. | [$ a! = $ b] devolvería verdadero. |
Es muy importante comprender que todas las expresiones condicionales deben estar entre llaves con espacios alrededor, por ejemplo [ $a == $b ] es correcto mientras que, [$a==$b] Es incorrecto.
Todos los cálculos aritméticos se realizan utilizando números enteros largos.
Operadores relacionales
Bourne Shell admite los siguientes operadores relacionales que son específicos de valores numéricos. Estos operadores no funcionan para valores de cadena a menos que su valor sea numérico.
Por ejemplo, los siguientes operadores funcionarán para comprobar una relación entre 10 y 20, así como entre "10" y "20", pero no entre "diez" y "veinte".
Asumir variable a tiene 10 y variable b sostiene 20 entonces -
Operador | Descripción | Ejemplo |
---|---|---|
-eq | Comprueba si el valor de dos operandos es igual o no; si es así, entonces la condición se vuelve verdadera. | [$ a -eq $ b] no es cierto. |
-ne | Comprueba si el valor de dos operandos es igual o no; si los valores no son iguales, la condición se cumple. | [$ a -ne $ b] es cierto. |
-gt | Comprueba si el valor del operando izquierdo es mayor que el valor del operando derecho; si es así, entonces la condición se vuelve verdadera. | [$ a -gt $ b] no es cierto. |
-lt | Comprueba si el valor del operando izquierdo es menor que el valor del operando derecho; si es así, entonces la condición se vuelve verdadera. | [$ a -lt $ b] es cierto. |
-ge | Comprueba si el valor del operando izquierdo es mayor o igual que el valor del operando derecho; si es así, entonces la condición se vuelve verdadera. | [$ a -ge $ b] no es cierto. |
-le | Comprueba si el valor del operando izquierdo es menor o igual que el valor del operando derecho; si es así, entonces la condición se vuelve verdadera. | [$ a -le $ b] es cierto. |
Es muy importante comprender que todas las expresiones condicionales deben colocarse entre llaves cuadradas con espacios alrededor. Por ejemplo,[ $a <= $b ] es correcto mientras que, [$a <= $b] Es incorrecto.
Operadores booleanos
Los siguientes operadores booleanos son compatibles con Bourne Shell.
Asumir variable a tiene 10 y variable b sostiene 20 entonces -
Operador | Descripción | Ejemplo |
---|---|---|
! | Esta es la negación lógica. Esto invierte una condición verdadera en falsa y viceversa. | [! falso] es cierto. |
-o | Esto es lógico OR. Si uno de los operandos es verdadero, entonces la condición se vuelve verdadera. | [$ a -lt 20 -o $ b -gt 100] es cierto. |
-a | Esto es lógico AND. Si ambos operandos son verdaderos, entonces la condición se vuelve verdadera en caso contrario es falsa. | [$ a -lt 20 -a $ b -gt 100] es falso. |
Operadores de cadenas
Los siguientes operadores de cadena son compatibles con Bourne Shell.
Asumir variable a contiene "abc" y variable b sostiene "efg" entonces -
Operador | Descripción | Ejemplo |
---|---|---|
= | Comprueba si el valor de dos operandos es igual o no; si es así, entonces la condición se vuelve verdadera. | [$ a = $ b] no es cierto. |
!= | Comprueba si el valor de dos operandos es igual o no; si los valores no son iguales, la condición se cumple. | [$ a! = $ b] es cierto. |
-z | Comprueba si el tamaño del operando de cadena dado es cero; si es de longitud cero, devuelve verdadero. | [-z $ a] no es cierto. |
-n | Comprueba si el tamaño del operando de cadena dado es distinto de cero; si tiene una longitud distinta de cero, devuelve verdadero. | [-n $ a] no es falso. |
str | Comprueba si strno es la cadena vacía; si está vacío, devuelve falso. | [$ a] no es falso. |
Operadores de prueba de archivos
Tenemos algunos operadores que se pueden utilizar para probar varias propiedades asociadas con un archivo Unix.
Asume una variable file contiene una "prueba" de nombre de archivo existente cuyo tamaño es de 100 bytes y tiene read, write y execute permiso en -
Operador | Descripción | Ejemplo |
---|---|---|
-b file | Comprueba si el archivo es un archivo especial de bloque; si es así, entonces la condición se vuelve verdadera. | [-b $ archivo] es falso. |
-c file | Comprueba si el archivo es un archivo especial de carácter; si es así, entonces la condición se vuelve verdadera. | [-c $ archivo] es falso. |
-d file | Comprueba si el archivo es un directorio; si es así, entonces la condición se vuelve verdadera. | [-d $ archivo] no es cierto. |
-f file | Comprueba si el archivo es un archivo normal en lugar de un directorio o un archivo especial; si es así, entonces la condición se vuelve verdadera. | [-f $ archivo] es verdadero. |
-g file | Comprueba si el archivo tiene su bit de ID de grupo establecido (SGID) establecido; si es así, entonces la condición se vuelve verdadera. | [-g $ archivo] es falso. |
-k file | Comprueba si el archivo tiene su bit adhesivo establecido; si es así, entonces la condición se vuelve verdadera. | [-k $ archivo] es falso. |
-p file | Comprueba si el archivo es una tubería con nombre; si es así, entonces la condición se vuelve verdadera. | [-p $ archivo] es falso. |
-t file | Comprueba si el descriptor de archivo está abierto y asociado con un terminal; si es así, entonces la condición se vuelve verdadera. | [-t $ archivo] es falso. |
-u file | Comprueba si el archivo tiene su bit Set User ID (SUID) establecido; si es así, entonces la condición se vuelve verdadera. | [-u $ archivo] es falso. |
-r file | Comprueba si el archivo es legible; si es así, entonces la condición se vuelve verdadera. | [-r $ archivo] es verdadero. |
-w file | Comprueba si se puede escribir en el archivo; si es así, entonces la condición se vuelve verdadera. | [-w $ archivo] es verdadero. |
-x file | Comprueba si el archivo es ejecutable; si es así, entonces la condición se vuelve verdadera. | [-x $ archivo] es verdadero. |
-s file | Comprueba si el archivo tiene un tamaño superior a 0; si es así, la condición se vuelve verdadera. | [-s $ archivo] es verdadero. |
-e file | Comprueba si el archivo existe; es verdadero incluso si el archivo es un directorio pero existe. | [-e $ archivo] es verdadero. |
Operadores de Shell C
El siguiente enlace le dará una breve idea sobre los operadores de shell C:
Operadores de Shell Korn
El siguiente enlace lo ayuda a comprender los operadores de Korn Shell: