4.10.- Expresiones aritméticas

El comando expr

Sintaxis:

Operadores aritméticos:

Tabla operadores de comparación:

Tabla de operadores lógicos:

Operadores varios:

Veamos unos ejemplos:

Si ponemos expr sin los espacios de separación el comando entiende que ha recibido un sólo argumento que lo interpreta como una cadena de caracteres:

El carácter “* se interpreta por el shell (reemplazado por la lista de archivos del directorio actual) antes de la ejecución del comando expr:

Por lo tanto tenemos que proteger el carácter “*” con el carácter “\“:

Podemos recuperar el resultado del comando dentro de una variable:

Agrupando expresiones:

El valor mostrado por una comparación no representa el valor verdadero de una verificación:

Veamos un ejemplo de un listado de script shell. En los script, la impresión por pantalla no se explota, por lo tanto la salida estándar se redirige hacia /dev/null.

Y obtenemos el resultado siguiente:

Para ejecutar un Script shell recuerda que debemos darle permiso de ejecución “chmod +x [nombre de archivo]” al script recién creado, también podemos quitar el permiso de ejecución “chmod -x [nombre de archivo]:

Ahora que sabemos dar permisos de ejecución:

  • Haga un script con un argumento donde se elija el archivo al que vamos a dar permiso de ejecución.
  • Del mismo modo hagamos otro script que quite el permiso de ejecución.

En el primer argumento pondremos el nombre del archivo.

El comando (( ))

Sintaxis:

Este comando representa mejoras respecto al comando expr:

  • Tiene multitud de operadores.
  • Los argumentos no tienen que estar separados por espacios.
  • Las variables no requieren estar prefijados por $.
  • Los caracteres especiales de shell no tienen que protegerse.
  • Las asignaciones se realizan dentro del comando.
  • La ejecución es más rápida.

Este comando recupera una gran parte de los operadores del lenguaje C.

Unos ejemplos…

Añadir 10 a la variable x:

Aquí los espacios no son obligatorios:

Podemos omitir el símbolo $:

Formato asignación lenguaje C:

El script igual nos indica si dos números son iguales:

Vemos el resultado:

El comando let

Este comando es equivalente a ((expresion)).

  • Practica lo visto en este capítulo para adquirir soltura en este tema: